资源
- 官方文档:https://python-rq.org/
- Github: https://github.com/rq/rq
安装
pip install rq
使用
创建任务
import redis
from rq import Queue, Retry
redis_client = redis.Redis(
host='127.0.0.1',
port=6379,
db=1
)
q = Queue(connection=redis_client)
q.enqueue(url_test, url, job_timeout='1m', retry=Retry(max=3, interval=30))
- url_test 表示要执行的函数,碰到过写在当前文件时,函数调用报错的现象,可以放在其他文件中导入进来。
- url 是传递给函数的参数,多个参数使用 args=(url, ) 或者 kwargs={'url':url}
- job_timeout 单个任务允许执行的最大时间,给整数就是秒,也可以使用 5s、1m 这样的字符串
- retry 可以设定重试机制
启动队列
rq worker --url redis://127.0.0.1:6379/1 --with-scheduler
- 通过 url 指定 redis 连接配置
- --with-scheduler 表示启用延时队列
- Redis 连接配置的格式为 redis://:password@hostname:port/db_number 所以有密码时如: redis://:[email protected]:6379/6
可以参考以下文件,在服务启动时批量创建队列
#!/bin/sh
cd /home/service/dvdfab_page_generator/
nohup python3.8 app.py 9999 crond> /dev/null 2>&1 &
nohup rq worker --url redis://127.0.0.1:6379/8 --with-scheduler > /dev/null 2>&1 &
nohup rq worker --url redis://127.0.0.1:6379/8 --with-scheduler > /dev/null 2>&1 &
nohup rq worker --url redis://127.0.0.1:6379/8 --with-scheduler > /dev/null 2>&1 &
nohup rq worker --url redis://127.0.0.1:6379/8 --with-scheduler > /dev/null 2>&1 &
nohup rq worker --url redis://127.0.0.1:6379/8 --with-scheduler > /dev/null 2>&1 &
nohup rq worker --url redis://127.0.0.1:6379/8 --with-scheduler > /dev/null 2>&1 &
nohup rq worker --url redis://127.0.0.1:6379/8 --with-scheduler > /dev/null 2>&1 &
nohup rq worker --url redis://127.0.0.1:6379/8 --with-scheduler > /dev/null 2>&1 &
nohup rq worker --url redis://127.0.0.1:6379/8 --with-scheduler > /dev/null 2>&1 &
nohup rq worker --url redis://127.0.0.1:6379/8 --with-scheduler > /dev/null 2>&1 &
相应的结束文件
ps -ef | grep "app.py 9999" |grep -v grep | awk '{print $2}' | xargs kill -9
ps -ef | grep 'rq worker' | grep -v grep | awk '{print $2}' | xargs kill -9
查看队列情况
rq info --url redis://127.0.0.1:6379/8

重新执行失败的任务
rq requeue --queue default --url redis://127.0.0.1/8 --all

官方的监控平台
docker pull eoranged/rq-dashboard
docker run -p 9181:9181 --env RQ_DASHBOARD_REDIS_URL='redis://10.10.2.225:6379/8' eoranged/rq-dashboard



