[英]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.