python - 类型错误 : cannot pickle '_thread.lock' object with RQ

标签 python flask queue

我正在使用带有 flask 的 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

我有以下代码的 worker :
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: cannot pickle '_thread.lock' object



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

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

关于python - 类型错误 : cannot pickle '_thread.lock' object with RQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60735003/

相关文章:

ajax - 如何 : Get real-time notifications in Laravel 4 using Iron. io MQ、推送队列和 AJAX

python - 使用 pandas 将列表列表写入现有 csv 文件

javascript - 减慢 Django Web 应用程序中 Vue.js 更新方法中的请求速率

python - 有没有办法在 python 中监听 firebase 数据库的变化?

python - 在文本文件中写在单独的行上

python - 在 AWS 中存储从 Pandas 导出的 Excel 文件

python - 一个易于刷新的 Python 线程队列

c++ - 如何使用模板泛化容器适配器?

flask - 在 flask 中处理 Ajax 请求

python - 我可以在 @app.before_request 中为我的 flask 请求对象附加一个值并将其转发给端点 View 函数吗?