Как убить задачу 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
, затем попробуйте временные ограничения.
Возможно, из-за родительской задачи этот метод не работает.