Python rqworker超时
我正在使用django rq在我的django站点上处理一些长时间运行的任务。这些任务使(我假设)rqworker的180秒超时跳闸:Python rqworker超时,python,django,redis,Python,Django,Redis,我正在使用django rq在我的django站点上处理一些长时间运行的任务。这些任务使(我假设)rqworker的180秒超时跳闸: JobTimeoutException: Job exceeded maximum timeout value (180 seconds). 如何增加此超时值?我尝试将--timeout 360添加到rqworker命令中,但无法识别 在我的python代码中,长期运行的作业称为via django_rq.enqueue(
JobTimeoutException: Job exceeded maximum timeout value (180 seconds).
如何增加此超时值?我尝试将--timeout 360添加到rqworker命令中,但无法识别
在我的python代码中,长期运行的作业称为via
django_rq.enqueue(
populate_trends,
self,
)
而且已经试过了
django_rq.enqueue_call(
func=populate_trends,
args=(self,),
timeout=3600,
)
我注意到了,但django rq似乎没有这样的方法
更新
现在,我分叉了django rq,并添加了一个用于增加超时的函数。可能需要与项目合作以获得长期解决方案。我已经在那里开始了讨论。这似乎是解决问题的正确方法
queue = django_rq.get_queue('default')
queue.enqueue(populate_trends, args=(self,), timeout=500)
如果你需要通过kwargs
queue = django_rq.get_queue('default')
queue.enqueue(populate_trends, args=(self,), kwargs={'x': 1,}, timeout=500)
感谢django rq项目的selwin提供的帮助。更新:
您可以将超时参数作为关键字参数传递给django rq的@job decorator。请注意,必须首先传递队列名称参数
@job("default", timeout=600)
def long_running_task():
...
为了让使用带参数函数的用户更清楚,您可以按如下方式传递超时
string_to_print = "Hello World"
queue = django_rq.get_queue('default')
queue.enqueue(print_input, to_print=string_to_print, timeout=600)
对于采用如下参数的函数
@job
def print_input(to_print):
print "The input supplied is ", to_print
使用作业超时:
queue.enqueue(worker_func, *args, **kwargs, job_timeout=200)
正如
timeout
参数所指出的,它不适用于rq的较新版本:
queue.enqueue()
上的timeout
参数已被弃用,取而代之的是
作业超时的时间
其中job\u timeout
的效果与timeout
的效果相同。如果您使用的是RQ 1.0(2019-04-06)或更新版本,请使用job\u timeout而不是timeout!