安装 redis-serverrq

初始设置

from flask import Flask
from rq import Queue
from redis import Redis

app = Flask(__name__)

# 创建任务队列
rq = Queue(connection=Redis())

任务加入队列

访问 http://localhost:5000/test/ 就会将 delay() 函数加入到任务队列。

@app.route('/test/')
def test():
    job = rq.enqueue(delay, 100)

    return '任务执行中...'

def delay(sec):
    time.sleep(sec)
    return '完成!'

管理任务

查看任务数

len(rq)

自定义元数据
例如要给任务添加自定义名称:

job.meta['name'] = '延时测试任务'
job.save_meta()

在模板中访问自定义元数据:

{{ job.meta.name }}

获取队列中所有任务

rq.jobs

通过ID获取指定任务
任务执行完毕后,信息默认存续500秒,随后会被清空。

rq.fetch_job()

设置任务结果信息的保存时间

q.enqueue(foo)  # result expires after 500 secs (the default)
q.enqueue(foo, result_ttl=86400)  # result expires after 1 day
q.enqueue(foo, result_ttl=0)  # result gets deleted immediately
q.enqueue(foo, result_ttl=-1)  # result never expires--you should delete jobs manually