gpt4 book ai didi

python - pymongo 集合对象序列化 __getnewargs__ 方法

转载 作者:太空狗 更新时间:2023-10-29 21:59:41 25 4
gpt4 key购买 nike

当我尝试使用 celery 运行我的任务时,Pymongo 集合对象失败。我猜它无法序列化它。我应该怎么办?顺便说一句,我试过 pickle ,但它对我没有帮助。

PS:我不想将全局数据库导入到这个模块中。

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

示例代码如下。module.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

db.py

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

最佳答案

您不应该序列化集合对象。而是存储集合名称 并从任务中获取集合对象。

集合对象需要关联的已建立的 MongoClient 对象图才能使用。如果没有 MongoClient,即使您以某种方式设法反序列化一个集合对象,它也无法工作。

关于python - pymongo 集合对象序列化 __getnewargs__ 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27449188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com