python rq job queue - time.sleep()



我希望使用 RQ 运行排队作业,但请查看以下示例:

from rq import Queue
from redis import Redis
from somewhere import count_words_at_url
# Tell RQ what Redis connection to use
redis_conn = Redis()
q = Queue(connection=redis_conn)  # no args implies the default queue
# Delay execution of count_words_at_url('http://nvie.com')
job = q.enqueue(count_words_at_url, 'http://nvie.com')
print job.result   # => None
# Now, wait a while, until the worker is finished
time.sleep(2)
print job.result   # => 889

我看到time.sleep(2) - 我想知道这是否是强制性的。我安排的工作可能需要(有时)一个小时才能完成(这因作业而异)。

RQ 是否仍然适合执行时间差异很大的此类作业?

任何建议都会很棒!

只要你安排的每个作业都给出了一些明确的、可观察的指示,表明它已经完成,你绝对可以使用 RQ 并等待这样的"指示";然后你将依靠这些指示来判断何时访问每个作业的result

在你引用的例子中,显然假设count_words_at_url没有明确指示它何时完成(你可以通过在while体内用sleep循环while job.result is None:来"轮询",但这非常脆弱 - 尽可能避免轮询)。

最新更新