Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask-RQ2 Redis错误:ZADD需要相等数量的值和分数_Python_Flask_Redis - Fatal编程技术网

Python Flask-RQ2 Redis错误:ZADD需要相等数量的值和分数

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...

我已尝试按照实现基本的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...
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一起工作