Как убить задачу Celery, если она не завершена по истечении заданного периода времени?

У меня есть задача Celery, которая выполняет функцию main внешних скриптов Python. Однако некоторые сценарии могут выполняться очень долго, и я хотел бы установить лимит времени, по истечении которого задания будут прерваны, если они не завершены.

Я перепробовал все способы, которые нашел в других подобных вопросах, но не смог найти способ реализовать это.

Моя задача заключается в следующем :

@app.task(name="execute_script", bind=True, base=CallbackTask)
def execute_script(self, script_id, variables, name, start_time):
    self.update_state(state='EXECUTING')
    script = Script.objects.get(pk=script_id)
    mod = Script.get_script(script) # Getting the script's module
    try:
        mod.main(variables, name)
    except Exception as e:
        raise e
    return name

Есть ли способ установить ограничение по времени для задачи Celery, по истечении которого она будет прервана, если не будет завершена?

Удалите base=CallbackTask, затем попробуйте временные ограничения.

Возможно, из-за родительской задачи этот метод не работает.

Вернуться на верх