gpt4 book ai didi

python - Windows 的 Celery 任务超时/时间限制?

转载 作者:太空狗 更新时间:2023-10-29 21:11:14 26 4
gpt4 key购买 nike

我有一个用 Flask 编写的 Web 应用程序,目前正在 Windows 上的 IIS 上运行(不要问...)。

我正在使用 Celery 来处理一些异步处理(访问慢速数据库并生成报告)。

但是,在尝试设置一些错误处理行为时,我在 docs 中遇到了这个问题:

"Time limits do not currently work on Windows and other platforms that do not support the SIGUSR1 signal."

由于数据库可能会变得非常慢,我真的很希望能够为我的任务指定超时行为,并让它们稍后在数据库可能没有如此任务时重试。由于各种原因,该应用必须从 Windows 提供,是否有任何解决方法?

非常感谢您的帮助。

最佳答案

如果确实需要设置任务超时时间,可以使用子进程来实现,代码如下

import json
from multiprocessing import Process
from celery import current_app
from celery.exceptions import SoftTimeLimitExceeded

soft_time_limit = 60

@current_app.task(name="task_name")
def task_worker(self, *args, **kwargs):
def on_failure():
pass
worker = Process(target=do_working, args=args, kwargs=kwargs, name='worker')
worker.daemon = True
worker.start()
worker.join(soft_time_limit)
while worker.is_alive():
worker.terminate()
raise SoftTimeLimitExceeded
return json.dumps(dict(message="ok"))

def do_working(*args, **kwargs):
pass # do something

关于python - Windows 的 Celery 任务超时/时间限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com