Cha*_*her 5 python heroku redis python-rq
我正在使用http://python-rq.org/在Heroku worker dynos上排队和执行任务.这些是长时间运行的任务,偶尔我需要在执行中期取消它们.我怎么用Python做到这一点?
from redis import Redis
from rq import Queue
from my_module import count_words_at_url
q = Queue(connection=Redis())
result = q.enqueue(
count_words_at_url, 'http://nvie.com')
Run Code Online (Sandbox Code Playgroud)
后来我想做一个单独的过程:
from redis import Redis
from rq import Queue
from my_module import count_words_at_url
q = Queue(connection=Redis())
result = q.revoke_all() # or something
Run Code Online (Sandbox Code Playgroud)
谢谢!
Joh*_*Mee 10
如果您手头有工作实例
job.cancel()
Run Code Online (Sandbox Code Playgroud)
或者,如果您可以确定哈希值:
from rq import cancel_job
cancel_job('2eafc1e6-48c2-464b-a0ff-88fd199d039c')
Run Code Online (Sandbox Code Playgroud)
但这只是将它从队列中删除;我不知道如果已经执行它会杀死它。
您可以让它记录挂墙时间,然后定期检查自身并在一段时间后引发异常/自毁。
对于手动、特别风格、死亡:如果你已经redis-cli
安装,你可以做一些激烈的事情,比如冲洗队列和作业:
$ redis-cli
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> exit
Run Code Online (Sandbox Code Playgroud)
我仍在挖掘文档以尝试找到如何进行精确杀死。
不确定这是否对任何人有帮助,因为这个问题已经 18 个月大了。
归档时间: |
|
查看次数: |
2236 次 |
最近记录: |