您好,我是 Redis 和 Redis 队列的新手,我正在尝试使用 Flask-RQ2 库来执行一个函数,但是当我将我的函数添加到队列中时,我的函数没有执行查看Flask-RQ2它包含一个可调用的,所以为什么是我的功能未执行from flask import Flaskfrom flask_rq2 import RQapp = Flask(__name__)app.config['RQ_REDIS_URL'] = 'redis://127.0.0.1:6379/0'rq = RQ(app)@rq.jobdef foo(a,b): print(a+b) return a + b;@app.route('/')def index(): job = foo.queue(5,9) print(foo.queue(8,8)) return 'Job queued!'if __name__ == "__main__": app.run(port=5000, debug=True)这是 Redis 的输出1570238667.183464 [0 127.0.0.1:64377] "MULTI"1570238667.183506 [0 127.0.0.1:64377] "SADD" "rq:queues" "rq:queue:default"1570238667.183522 [0 127.0.0.1:64377] "HSET" "rq:job:db248b95-64bd-4300-b562-4781a7136e3c" "status" "queued"1570238667.183547 [0 127.0.0.1:64377] "HMSET" "rq:job:db248b95-64bd-4300-b562-4781a7136e3c" "created_at" "2019-10-05T01:24:27.181463Z" "data" "x\x9ck`\x99*\xc3\x00\x01\x1a=<\xf1\xf1\xb9\x89\x99y\xf1\xf1zi\xf9\xf9S\xfc\xbcY\xbd9\xdb\xa6\xd4N)\x99\xa2\a\x00\xbbl\x0bp" "origin" "default" "description" "__main__.foo(5, 9)" "enqueued_at" "2019-10-05T01:24:27.182076Z" "timeout" "180" "result_ttl" "500" "status" "queued"1570238667.183641 [0 127.0.0.1:64377] "RPUSH" "rq:queue:default" "db248b95-64bd-4300-b562-4781a7136e3c"1570238667.183672 [0 127.0.0.1:64377] "EXEC"
1 回答

眼眸繁星
TA贡献1873条经验 获得超9个赞
您必须实际启动一个工人来运行这些作业。
https://flask-rq2.readthedocs.io/en/latest/#get-worker
# Creates a worker that handle jobs in ``default`` queue.
default_worker = rq.get_worker()
default_worker.work(burst=True)
# Creates a worker that handle jobs in both ``simple`` and ``low`` queues.
low_n_simple_worker = rq.get_worker('low', 'simple')
low_n_simple_worker.work(burst=True)
第一个示例应该适用于您的情况。如果你有一个 manage.py,你可以将它写入一个管理器命令并从那里运行它。
添加回答
举报
0/150
提交
取消