FLASK-RQ2 如何使用作业装饰器调用函数

您好,我是 Redis 和 Redis 队列的新手,我正在尝试使用 Flask-RQ2 库来执行一个函数,但是当我将我的函数添加到队列中时,我的函数没有执行查看Flask-RQ2它包含一个可调用的,所以为什么是我的功能未执行


from flask import Flask

from flask_rq2 import RQ


app = Flask(__name__)

app.config['RQ_REDIS_URL'] = 'redis://127.0.0.1:6379/0'


rq = RQ(app)



@rq.job

def 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"


慕盖茨4494581
浏览 220回答 1
1回答

眼眸繁星

您必须实际启动一个工人来运行这些作业。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,你可以将它写入一个管理器命令并从那里运行它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python