python-rq worker没有在队列中读取作业

时间:2015-02-26 09:30:39

标签: python python-rq

我在设置python-rq时面临一个基本问题 - rqworker似乎无法识别被推送到其正在侦听的队列中的作业。

所有内容都在virtualenv内进行 我有以下代码:

from redis import Redis
from rq import Queue
from rq.registry import FinishedJobRegistry
from videogen import videogen
import time

redis_conn = Redis(port=5001)
videoq = Queue('medium', connection=redis_conn)
fin_registry = FinishedJobRegistry(connection=redis_conn, name='medium')

jobid = 1024
job = videoq.enqueue(videogen, jobid)

while not job.is_finished:
    time.sleep(2)
    print job.result

这里videogen是一个简单的函数,它立即返回它接收的整数参数。

在运行rqworker medium并启动应用时,没有打印结果。除此之外,rqworker没有额外的痕迹:

14:41:29 RQ worker started, version 0.5.0
14:41:29 
14:41:29 *** Listening on medium...

可以从运行rqworker的同一个shell访问redis实例,甚至可以显示更新的密钥:

127.0.0.1:5001> keys *
1) "rq:queues"
2) "rq:queue:medium"
3) "rq:job:9a46f9c5-03e1-4b08-946b-61ad2c3815b1"

那么这里可能缺少什么?

1 个答案:

答案 0 :(得分:4)

愚蠢的错误 - 必须向rqworker提供redis连接URL rqworker --url redis://localhost:5001 medium