如何将包含pymongo db的函数传递给rq queue(绕过inability来seralize\u thread.lock)?

r8uurelv  于 2021-06-09  发布在  Redis
关注(0)|答案(0)|浏览(265)

我有一个数据库和一个监控它的服务。我想把有关上述数据库的电话排到 rq.Queue :

回调.py

from pymongo import MongoClient

db_client = MongoClient(username='root', password='pass').db.collection

def do_something(db):
    while not list(db.find({})):
        print('empty db')
    print('found something')

然而,每次尝试我都会做这样的事情

from redis import Redis; from rq import Queue; from allocator import db_client, do_something
Queue(connection=Redis()).enqueue(do , (db_client, )

导致

TypeError: cannot pickle '_thread.lock' object

我怎样才能绕过它并允许排队函数与db交互?
我尝试过的事情:
使用另一个序列化程序(dill- TypeError: cannot pickle 'sqlite3.Connection' object )
Package do_something 在拥有db的类中-相同的错误

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题