Obj*_*_88 6 python redis python-rq
我正在尝试更改RQ工作的超时时间,但是似乎没有任何效果。我有一些效果:
my_queue = Queue('my_task', connection=Redis())
job_args = (1, 2, 4)
my_queue.enqueue_call(
my_func,
args=job_args,
timeout=2700
)
Run Code Online (Sandbox Code Playgroud)
但我仍然
JobTimeoutException: Job exceeded maximum timeout value (180 seconds)
Run Code Online (Sandbox Code Playgroud)
我非常拼命,甚至尝试进入rq模块queue.py并将超时的默认参数更改为2700和DEFAULT_TIMEOUT(在Queue类中定义的变量,其中包含enqueue_call方法)。我是否缺少任何东西?有人知道吗?谢谢!
asi*_*tm9 11
我们可以通过在队列初始化时设置超时来解决这个问题。
from rq import Worker, Queue, Connection
q = Queue(default_timeout=3600)
Run Code Online (Sandbox Code Playgroud)
希望这能解决您的疑问。
enqueue_call 中的超时参数没有问题。刚刚用这个例子测试了一下。
函数.py
from time import sleep
def test(a, b, c):
sleep(a)
print str(b+c)
Run Code Online (Sandbox Code Playgroud)
驱动程序.py
from redis import Redis
from rq import Queue
from function import test
q = Queue('abc', connection=Redis())
q.enqueue_call(test, args=(300, 2, 3), timeout=200)
q.enqueue_call(test, args=(100, 2, 3), timeout=200)
Run Code Online (Sandbox Code Playgroud)
结果:
13:08:11 abc: test.test(100, 2, 3) (4b4e96e5-af30-4175-ab94-ceaf9187e581)
5
13:08:13 abc: test.test(300, 2, 3) (04605c34-d039-42ad-954e-7f445f0f8bc9)
13:11:17 JobTimeoutException: Job exceeded maximum timeout value (200 seconds)
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/rq/worker.py", line 568, in perform_job
rv = job.perform()
File "/usr/local/lib/python2.7/dist-packages/rq/job.py", line 495, in perform
self._result = self.func(*self.args, **self.kwargs)
File "./test.py", line 4, in test
sleep(a)
File "/usr/local/lib/python2.7/dist-packages/rq/timeouts.py", line 51, in handle_death_penalty
'value ({0} seconds)'.format(self._timeout))
JobTimeoutException: Job exceeded maximum timeout value (200 seconds)
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/rq/worker.py", line 568, in perform_job
rv = job.perform()
File "/usr/local/lib/python2.7/dist-packages/rq/job.py", line 495, in perform
self._result = self.func(*self.args, **self.kwargs)
File "./test.py", line 4, in test
sleep(a)
File "/usr/local/lib/python2.7/dist-packages/rq/timeouts.py", line 51, in handle_death_penalty
'value ({0} seconds)'.format(self._timeout))
JobTimeoutException: Job exceeded maximum timeout value (200 seconds)
Run Code Online (Sandbox Code Playgroud)
如果您使用supervisor等工具来管理rq工作人员,请尝试重新启动服务。
| 归档时间: |
|
| 查看次数: |
1953 次 |
| 最近记录: |