python – Django TimeLimitExceeded错误
作者:互联网
今天我收到了来自Celery的错误邮件,有人可以解释一下,可能我如何解决超时问题?非常有帮助,谢谢.
PS我的消息似乎已发送尽管有这个错误,是不是也是这样?
错误:
Task Request to Process with id 65123935-b190-4718-9ed0-fb863359f27f
raised exception:
'TimeLimitExceeded(300.0,)'
Task was called with args: (<Batch: Batch object>,) kwargs: {}.
The contents of the full traceback was:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/billiard/pool.py", line 496, in on_hard_timeout
raise TimeLimitExceeded(job._timeout)
TimeLimitExceeded: TimeLimitExceeded(300.0,)
--
Just to let you know,
py-celery at w1.ip-10-32-53-113.
任务:
class ProcessRequests(Task):
name = "Request to Process"
max_retries = 1
default_retry_delay = 3
def run(self, batch):
# Only run this task on non-scheduled tasks
if batch.status != "Scheduled":
q = Contact.objects.filter(contact_owner=batch.user)
if batch.group == None:
q = q.filter(id=batch.contact_id)
else:
q = q.filter(group=batch.group)
for e in q:
msg = Message.objects.create(
recipient_number=e.mobile,
content=batch.content,
sender=e.contact_owner,
billee=batch.user,
sender_name=batch.sender_name
)
gateway = Gateway.objects.get(pk=2)
msg.send(gateway)
解决方法:
您收到TimeLimitExceeded异常,因为您的任务执行时间超过300秒. 300秒是任务可以运行的默认时间.
正如Avichal Badaya所说,您可以配置Celery以允许更长的执行任务.
您提到您的邮件仍然已发送,但这可能发生,因为您的任务是为批处理编写的.因此,要么您尝试发送多条消息,要么您只是尝试发送一条消息,但有些消息会让批处理变得混乱.
你能告诉我们你如何称呼这项任务吗?
标签:python,django,django-celery 来源: https://codeday.me/bug/20190620/1243470.html