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对象