Проверка сельдерея, как долго задача ожидала в очереди, прежде чем она была выполнена - PullRequest
0 голосов
/ 04 апреля 2020

Можно ли проверить в функции задачи без передачи временного аргумента из метода, который ее вызывает

Допустим, у меня есть

@task(name="example.task.task1")
def task1(arg1, arg2):
  # I want to know how long it had waited in the queue 
  time_task_waited = some_celery_method_that_tracks_time()
  ....

1 Ответ

0 голосов
/ 22 апреля 2020

Вам нужно будет использовать связанную задачу , чтобы получить заголовки запроса и установить заголовки сообщений задачи при вызове apply_async:

from datetime import datetime

some_task.apply_async(headers={'timestamp': datetime.now()})

tasks.py:

@task(bind=True)
def some_task(self,):
    print(self.request.headers.get('time_sent', 0))
...