Eri*_*rik 16 python django redis
我正在使用django-rq来处理我的django站点上的一些长时间运行的任务.这些任务会导致(我假设)rqworker的180秒超时:
JobTimeoutException: Job exceeded maximum timeout value (180 seconds).
Run Code Online (Sandbox Code Playgroud)
如何增加此超时值?我已经尝试将--timeout 360添加到rqworker命令但是无法识别.
在我的python代码中,我的长期工作被调用
django_rq.enqueue(
populate_trends,
self,
)
Run Code Online (Sandbox Code Playgroud)
并尝试过
django_rq.enqueue_call(
func=populate_trends,
args=(self,),
timeout=3600,
)
Run Code Online (Sandbox Code Playgroud)
我在rq docs中注意到但django-rq似乎没有这样的方法.
更新
现在我分叉了django-rq并添加了一个占位符修复来增加超时.可能需要与项目合作才能获得更长期的解决方案.我在那里开始讨论一个问题.
Eri*_*rik 23
这似乎是解决问题的正确方法.
queue = django_rq.get_queue('default')
queue.enqueue(populate_trends, args=(self,), timeout=500)
Run Code Online (Sandbox Code Playgroud)
如果你需要通过kwargs,
queue = django_rq.get_queue('default')
queue.enqueue(populate_trends, args=(self,), kwargs={'x': 1,}, timeout=500)
Run Code Online (Sandbox Code Playgroud)
感谢django-rq项目中的selwin提供的帮助.
更新:您可以将timeout参数作为关键字参数传递给django-rq的@job装饰器.请注意,您必须先传递队列名称参数.
@job("default", timeout=600)
def long_running_task():
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6321 次 |
| 最近记录: |