TypeError:无法使用RQ腌制'_thread.lock'对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeError:无法使用RQ腌制'_thread.lock'对象相关的知识,希望对你有一定的参考价值。

我正在使用带有烧瓶的RQ在循环中排队作业。我有以下代码:

from rq import Queue
from rq.job import Job
from worker import conn

q = Queue(connection=conn)

for i in range(5):
    job = q.enqueue_call(
    func=process_data, args=(i, data,))
    print(job.get_id()) 

现在我得到了错误:

TypeError: cannot pickle '_thread.lock' object

我有下面的代码的工作人员:

import os

import redis
from rq import Worker, Queue, Connection

listen = ['default']

redis_url = os.getenv('REDISTOGO_URL', 'redis://localhost:6379')

conn = redis.from_url(redis_url)

if __name__ == '__main__':
    with Connection(conn):
        worker = Worker(list(map(Queue, listen)))
        worker.work()

如何纠正?

答案

我通过从Python 3.8降级到Python 3.7解决了类似的问题

我的情况有些不同。我正在运行Django服务器,该服务器使用Django-Q计划任务。但是,Django-Q基于RQ,并且错误

TypeError:无法腌制'_thread.lock'对象

由Python的Multiprocessing模块抛出,所以我相信解决方案会翻译。

截至2020年5月,我希望这是一个错误,尽管目前尚不清楚是什么原因造成的。

以上是关于TypeError:无法使用RQ腌制'_thread.lock'对象的主要内容,如果未能解决你的问题,请参考以下文章

Python多处理-TypeError:无法腌制'_tkinter.tkapp'对象

_pickle.PicklingError:无法序列化对象:TypeError:无法腌制_thread.RLock对象

pickle.dump(模型,pickle_out)| TypeError:无法腌制 _thread._local 对象

PySpark / Glue:PicklingError:无法序列化对象:TypeError:无法腌制thread.lock对象

TypeError:无法腌制 CompiledFFI 对象

TypeError:无法腌制 dict_items 对象