gpt4 book ai didi

python - Python中是否有分布式任务队列使我能够杀死不愿合作的挂起任务

转载 作者:太空狗 更新时间:2023-10-30 00:00:16 25 4
gpt4 key购买 nike

基本上我有很多任务(大约 1000 个批处理),这些任务的执行时间可能相差很大(从不到一秒到 10 分钟不等)。我知道如果一个任务执行超过一分钟我可以杀死它。这些任务是优化某些数据挖掘模型(但彼此独立)的步骤,并且大部分时间都花在某些 C 扩展函数中,因此如果我试图优雅地终止它们,它们将不会合作。

是否有适合该模式的分布式任务队列 --- AFAIK:celery 允许中止愿意合作的任务。但我可能错了。

我最近问了类似的问题,关于在纯 python 中杀死挂起函数 Kill hanging function in Python in multithreaded enviorment .

我想我可以将 celery 任务子类化,这样它会生成一个新进程,然后执行它的有效载荷,如果它需要很长时间就会中止它的执行,但是我会被新解释器的初始化开销杀死。

最佳答案

Celery支持time limiting .您可以使用时间限制来终止长时间运行的任务。除了终止任务之外,您还可以使用限制来处理任务中的SoftTimeLimitExceeded异常并干净地终止任务。

from celery.task import task
from celery.exceptions import SoftTimeLimitExceeded

@task
def mytask():
try:
do_work()
except SoftTimeLimitExceeded:
clean_up_in_a_hurry()

关于python - Python中是否有分布式任务队列使我能够杀死不愿合作的挂起任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8882225/

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