簡體   English   中英

pymongo 集合對象序列化 __getnewargs__ 方法

[英]pymongo collection object serializing __getnewargs__ method

當我嘗試使用 celery 運行我的任務時,Pymongo 集合對象失敗。 我猜它無法序列化它。 我該怎么辦? 順便說一下,我試過泡菜,但它對我沒有幫助。

PS:我不想將全局數據庫導入到這個模塊。

“集合”對象不可調用。 如果您打算調用“ getnewargs ”方法....

示例代碼如下。 模塊.py

from celery.contrib.methods import task_method



class Some_Class(object):
    """docstring for Some_Class"""
    def __init__(self, db):
        super(Some_Class, self).__init__()
        self.db = db  # This object causes 'Collection' object is not callable
        #db is a pymongo collection object from db.py


    @app.task(filter=task_method)  # Celery task
    def add(self):
        """
        db.insert({'some_key':'some_value'})
        """
        return 3

數據庫文件

from pymongo import MongoClient    
db = MongoClient()['test']['collection']

您是否在Windows計算機上運行此代碼? 由於Windows上不存在“fork”,因此可能存在潛在的fork問題,因此該對象可能無法選擇而導致錯誤。

您不應該序列化集合對象。 而是存儲集合名稱並從任務中獲取集合對象。

集合對象需要關聯的已建立的 MongoClient 對象圖才能使用。 如果沒有 MongoClient,即使您以某種方式設法反序列化集合對象,它也無法工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM