python rq作业队列-time.sleep()

python rq作业队列-time.sleep(),python,python-rq,Python,Python Rq,我希望使用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 e

我希望使用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.sleep2-我想知道这是否是必须指定的。我安排的每小时完成这项工作的时间因工作而异

RQ是否仍然适用于执行时间差异很大的作业


任何建议都很好

只要你安排的每项工作都给出了一些清晰的、可观察到的指示,表明它已经全部完成,你就可以使用RQ并等待这些指示;然后,您将依靠这些指示来判断何时访问每个作业的结果


在您引用的示例中,显然假设count_words_at_url没有给出完成时间的明确指示,您可以通过while job循环进行投票。结果是没有:while的身体在睡觉,但这很脆弱-尽可能避免投票。

很抱歉,但是,您能给我举一个例子,说明在生产环境中如何进行等待指示吗?还有,我们在这里谈论的是什么样的迹象?像bash退出代码一样?典型的例子是让每个繁重的工作都将一个文件写入指定的目录,并在完成时使用指定的名称。然后,您的主机监视该目录中的事件,例如使用来自的监视程序,并对其做出适当的反应。文件只是进程在不进行轮询的情况下进行通信的一个示例,但只要您在单个系统中工作,文件在许多情况下仍然可以使用;对于完全分布式的系统,需要更先进的方法。感谢看门狗提示-我一定会使用它。所以,首先,我让一个繁重的工作在工作完全完成时写一个文件,比如done.txt,并让watchdog监视它-我如何将它与RQ集成?i、 我如何让RQ知道工作已经完成?仅仅在RQ中查找done.txt是没有意义的。。对不起,我觉得我有点迷路了。啊。。我想我看到了。。所以我只让看门狗监视done.txt,如果存在,则打印job.result,否则不打印。这就是它的要点吗?是的,除了你通常有很多工作,所以你会从每个工作中寻找不同名称的文件。