Python中是否有分布式任务队列使我能够杀死不愿意合作的挂起的任务
基本上,我有很多任务(一批大约1000个),这些任务的执行时间差别很大(从不到秒到10分钟)。我知道,如果一项任务执行时间超过一分钟,我可以终止它。这些任务是优化某些数据挖掘模型的步骤(但彼此独立),并且大部分时间都花在某些C扩展函数中,因此如果我试图优雅地杀死它们,它们将不会合作 是否存在适合该模式的分布式任务队列---AFAIK:Cellery允许中止愿意合作的任务。但我可能错了 我最近问了一个类似的问题,关于在纯python中终止挂起的函数 我想我可以对芹菜任务进行子类化,这样它会产生一个新的进程,然后执行它的有效负载,如果需要很长的时间,就会中止它的执行,但这样我就会被新解释器的初始化开销扼杀 允许多进程管理,包括终止不合作的任务 但是:Python中是否有分布式任务队列使我能够杀死不愿意合作的挂起的任务,python,multithreading,celery,task-queue,Python,Multithreading,Celery,Task Queue,基本上,我有很多任务(一批大约1000个),这些任务的执行时间差别很大(从不到秒到10分钟)。我知道,如果一项任务执行时间超过一分钟,我可以终止它。这些任务是优化某些数据挖掘模型的步骤(但彼此独立),并且大部分时间都花在某些C扩展函数中,因此如果我试图优雅地杀死它们,它们将不会合作 是否存在适合该模式的分布式任务队列---AFAIK:Cellery允许中止愿意合作的任务。但我可能错了 我最近问了一个类似的问题,关于在纯python中终止挂起的函数 我想我可以对芹菜任务进行子类化,这样它会产生一个
- 这是测试版软件,即使它为可靠的gunicorn供电
- 我不知道它如何处理1000个进程
- 进程之间的通信尚未包括在内,因此您必须使用例如
from celery.task import task
from celery.exceptions import SoftTimeLimitExceeded
@task
def mytask():
try:
do_work()
except SoftTimeLimitExceeded:
clean_up_in_a_hurry()
撤销芹菜任务时,可以为其提供可选的
terminate=True
关键字
task.revoke(terminate=True)
它并不完全符合您的要求,因为它不是由进程本身完成的,但是您应该能够扩展task类以自杀,或者拥有一个重新整理清理任务或进程清除未按时完成的任务。您是否查看了
IPython.parallel
?它支持负载平衡和超时。