Изобразите этого "занятого" рабочего процесса (concurrency=1 для имитации бизнеса):
Код: Выделить всё
uv run celery --app src.tasks.example worker --concurrency 1 --queues celery --loglevel info --hostname default
Код: Выделить всё
@app.task()
def naptime(seconds: float) -> None:
sleep(seconds)
Код: Выделить всё
naptime.apply_async(args=(3,))
task2 = naptime.apply_async(args=(3,))
start = time()
result = task2.get()
total = time() - start
Теперь я хочу убедиться, что задача2 завершается через 5 секунд после отправки, если она выполняется.
- => не работает так, как я хочу, потому что это уничтожит задачу через 5 секунд после ее поднятия. К этому времени задача будет выполнена, но позже, чем через 5 секунд после отправки.
Код: Выделить всё
task2 = naptime.apply_async(args=(3,), time_limit=5) - => не работает так, как я хочу, задача не имеет времени истечения.
Код: Выделить всё
task2 = naptime.apply_async(args=(3,), time_limit=5, expires=5)
Как я могу убедиться, что задача убит в определенное время?
Мобильная версия