Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python rqworker超时_Python_Django_Redis - Fatal编程技术网

Python rqworker超时

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(

我正在使用django rq在我的django站点上处理一些长时间运行的任务。这些任务使(我假设)rqworker的180秒超时跳闸:

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!