当任务数大于核心数时,即使收到Django celery组,也不会执行任务

时间:2020-01-03 17:15:44

标签: django rabbitmq task celery django-celery

我有一个main_task(例如G1),它应该并行执行多个任务(说T1到T9任务)。 工人收到G1并开始执行。 G1将T1发送到T9(9个任务)给工作人员,并且工作人员已收到所有9个任务。 工作者成功执行任务T1至T8(前8个任务)。 任务T9由工作人员接收,但不执行。 超时30分钟后,G1(main_task)引发TimeOutError并停止执行。那是工人开始执行任务T9的时候。

任何解决此问题的帮助将不胜感激。谢谢。

  • django-celery == 3.2.2
  • Python 3.6
def bla(something):
    # do something
@shared_task
def main_task():
    process_start_time = datetime.datetime.now()
    job_list = []
    for i in i_list:
        job_list.append(bla.s(i))
    job = group(job_list)
    result = job.apply_async()
    while result.waiting():
        print('waiting..')
        time.sleep(5)
        if (datetime.datetime.now() - process_start_time).seconds >= 1800: # 30 minutes timeout
            return TimeOutError
    if result.ready():
        # do something

0 个答案:

没有答案