Python Flask-RQ2 Redis错误:ZADD需要相等数量的值和分数
我已尝试按照实现基本的Flask-RQ2设置,以尝试同时写入两个单独的文件,但我遇到以下Redis错误:Python Flask-RQ2 Redis错误:ZADD需要相等数量的值和分数,python,flask,redis,Python,Flask,Redis,我已尝试按照实现基本的Flask-RQ2设置,以尝试同时写入两个单独的文件,但我遇到以下Redis错误:Redis.exceptions.RedisError:ZADD在工作人员尝试在Redis队列中执行作业时需要相同数量的值和分数 以下是完整的堆栈跟踪: 10:20:37: Worker rq:worker:1d0c83d6294249018669d9052fd759eb: started, version 1.2.0 10:20:37: *** Listening on default...
Redis.exceptions.RedisError:ZADD在工作人员尝试在Redis队列中执行作业时需要相同数量的值和分数
以下是完整的堆栈跟踪:
10:20:37: Worker rq:worker:1d0c83d6294249018669d9052fd759eb: started, version 1.2.0
10:20:37: *** Listening on default...
10:20:37: Cleaning registries for queue: default
10:20:37: default: tester('time keeps on slipping') (02292167-c7e8-4040-a97b-742f96ea8756)
10:20:37: Worker rq:worker:1d0c83d6294249018669d9052fd759eb: found an unhandled exception, quitting...
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/rq/worker.py", line 515, in work
self.execute_job(job, queue)
File "/usr/local/lib/python3.6/dist-packages/rq/worker.py", line 727, in execute_job
self.fork_work_horse(job, queue)
File "/usr/local/lib/python3.6/dist-packages/rq/worker.py", line 667, in fork_work_horse
self.main_work_horse(job, queue)
File "/usr/local/lib/python3.6/dist-packages/rq/worker.py", line 744, in main_work_horse
raise e
File "/usr/local/lib/python3.6/dist-packages/rq/worker.py", line 741, in main_work_horse
self.perform_job(job, queue)
File "/usr/local/lib/python3.6/dist-packages/rq/worker.py", line 866, in perform_job
self.prepare_job_execution(job, heartbeat_ttl)
File "/usr/local/lib/python3.6/dist-packages/rq/worker.py", line 779, in prepare_job_execution
registry.add(job, timeout, pipeline=pipeline)
File "/usr/local/lib/python3.6/dist-packages/rq/registry.py", line 64, in add
return pipeline.zadd(self.key, {job.id: score})
File "/usr/local/lib/python3.6/dist-packages/redis/client.py", line 1691, in zadd
raise RedisError("ZADD requires an equal number of "
redis.exceptions.RedisError: ZADD requires an equal number of values and scores
我的主要观点是:
#!/usr/bin/env python3
from flask import Flask
from flask_rq2 import RQ
import time
import tester
app = Flask(__name__)
rq = RQ(app)
default_worker = rq.get_worker()
default_queue = rq.get_queue()
tester = tester.Tester()
while True:
default_queue.enqueue(tester.tester, args=["time keeps on slipping"])
default_worker.work(burst=True)
with open('test_2.txt', 'w+') as f:
data = f.read() + "it works!\n"
time.sleep(5)
if __name__ == "__main__":
app.run()
因此,我的tester.py
模块是:
#!/usr/bin/env python3
import time
class Tester:
def tester(string):
with open('test.txt', 'w+') as f:
data = f.read() + string + "\n"
f.write(data)
time.sleep(5)
我正在使用以下命令:
python==3.6.7-1~18.04
redis==2.10.6
rq==1.2.0
Flask==1.0.2
Flask-RQ2==18.3
我还尝试了文档中更简单的设置,如果您没有指定队列或工作者,而是隐式地依赖Flask-RQ2模块默认值。。。如果您对此有任何帮助,我们将不胜感激。请更深入地阅读文档,它似乎可以与Redis一起工作