我的rq任务运行正常,但获取所有作业的函数都不起作用--
$ pip3 freeze | egrep -i "rq|redis"
redis==2.10.6
rq==0.12.0
$ flask shell
Python 3.6.5 (default, Apr 1 2018, 05:46:30)
[GCC 7.3.0] on linux
App: app [production]
Instance: .../flask/instance
>>> from redis import Redis
>>> import rq
>>> q = rq.Queue('example-rq', connection=Redis.from_url('redis://'))
>>> job = q.enqueue('app.tasks.example', 100)
>>> job.get_id()
'93c0e279-3ce7-48c6-8f97-ace8a29ada70'
>>> q.job_ids
[]
>>> q.get_job_ids()
[]
>>> q.jobs
[]示例任务非常基本--
$ cat app/tasks.py
from time import sleep
from rq import get_current_job
# duration in second
def example(duration):
job = get_current_job()
print("Starting task example " + job.get_id())
for i in range(duration):
job.meta['progress'] = 100.0 * i / duration
job.save_meta()
if i%5 == 0:
print(i)
sleep(1)
job.meta['progress'] = 100
job.save_meta()
print("Completed task example")会出什么问题呢?顺便说一句,这是在Ubuntu 18.04下
发布于 2018-11-05 13:58:10
我想我和你有同样的问题。当您将作业排入队列时,rq worker会立即将该作业从队列中移除,因此当您调用q.job_ids时,它将返回一个空列表,因为不再有任何排队的作业。如果要将两个作业排入队列,rq worker将从队列中取出第一个作业,然后您将从随后的q.job_ids调用中看到第二个job_id。
注意:如果您想要获取工作进程正在处理的作业的job_id,请使用StartedJobRegistry (请参见Get *all* current jobs from python-rq)
https://stackoverflow.com/questions/51573566
复制相似问题