Какой лучший способ запросить и отправить позицию задачи celery в очереди через api или websocket?

В настоящее время в моем проекте я пытаюсь получить задачу, которая обновляет условно количество задач в очереди перед соответствующей задачей, Поэтому я использую следующий подход: вызываю задачу celery (processingTask), которая выполняет фактическую работу по обработке внутри другой задачи celery (queueUpdatingTask) (которая посылает сообщение по websocket о состоянии очереди)

Так что я пытаюсь сделать что-то вроде следующего,

Каждый раз при запуске views я получаю задачи в разном порядке, иногда processingTask находится на 1 месте в очереди, а иногда на 4 месте, хотя задача sample добавляется в очередь раньше, чем processingTask. Я запускаю 2 рабочих, один для задачи обработки, а другой для задачи обновления q

  1. Does celery work in FIFO if it is how processingTask is added in differnt position each time even when i push other tasks before it?
->  celery@feeds: OK
    - empty -
->  celery@host: OK
    * {'id': '9ef9d774-42a0-4f17-b404-446573adc67e', 'name': 'api.tasks.processingTask', 'args': [], 'kwargs': {}, 'type': 'api.tasks.processingTask', 'hostname': 'celery@host', 'time_start': 1647843257.1017263, 'acknowledged': True, 'delivery_info': {'exchange': '', 'routing_key': 'default', 'priority': 0, 'redelivered': None}, 'worker_pid': 63355}
    * {'id': 'fd138441-17ca-46d0-a54b-959a84af1363', 'name': 'api.tasks.sample', 'args': [], 'kwargs': {}, 'type': 'api.tasks.sample', 'hostname': 'celery@host', 'time_start': 1647843257.0701187, 'acknowledged': True, 'delivery_info': {'exchange': '', 'routing_key': 'default', 'priority': 0, 'redelivered': None}, 'worker_pid': 63352}
    * {'id': '8457ab25-e6c2-4d49-bd0b-539a73008d84', 'name': 'api.tasks.sample', 'args': [], 'kwargs': {}, 'type': 'api.tasks.sample', 'hostname': 'celery@host', 'time_start': 1647843257.0533583, 'acknowledged': True, 'delivery_info': {'exchange': '', 'routing_key': 'default', 'priority': 0, 'redelivered': None}, 'worker_pid': 63359}
    * {'id': 'a55a9141-000b-44ab-a7f7-dbae43c85e8d', 'name': 'api.tasks.sample', 'args': [], 'kwargs': {}, 'type': 'api.tasks.sample', 'hostname': 'celery@host', 'time_start': 1647843257.0546007, 'acknowledged': True, 'delivery_info': {'exchange': '', 'routing_key': 'default', 'priority': 0, 'redelivered': None}, 'worker_pid': 63351}
    * {'id': 'ac8e3ce2-04ff-45c1-9f4c-8751b92da08c', 'name': 'api.tasks.sample', 'args': [], 'kwargs': {}, 'type': 'api.tasks.sample', 'hostname': 'celery@host', 'time_start': 1647843257.0411253, 'acknowledged': True, 'delivery_info': {'exchange': '', 'routing_key': 'default', 'priority': 0, 'redelivered': None}, 'worker_pid': 63358}
    * {'id': '8db89dbf-09f3-4de1-b2c2-e392ea388214', 'name': 'api.tasks.sample', 'args': [], 'kwargs': {}, 'type': 'api.tasks.sample', 'hostname': 'celery@host', 'time_start': 1647843257.0723174, 'acknowledged': True, 'delivery_info': {'exchange': '', 'routing_key': 'default', 'priority': 0, 'redelivered': None}, 'worker_pid': 63353}

2 nodes online.
->  celery@feeds: OK
    - empty -
->  celery@host: OK
    * {'id': 'c022ed7c-b185-4e85-86eb-93c46c0caf9a', 'name': 'api.tasks.sample', 'args': [], 'kwargs': {}, 'type': 'api.tasks.sample', 'hostname': 'celery@host', 'time_start': 1647842591.3291578, 'acknowledged': True, 'delivery_info': {'exchange': '', 'routing_key': 'default', 'priority': 0, 'redelivered': None}, 'worker_pid': 63358}
    * {'id': '6bd22b62-3ebb-4687-ab2c-6936da50cc5b', 'name': 'api.tasks.sample', 'args': [], 'kwargs': {}, 'type': 'api.tasks.sample', 'hostname': 'celery@host', 'time_start': 1647842591.3367696, 'acknowledged': True, 'delivery_info': {'exchange': '', 'routing_key': 'default', 'priority': 0, 'redelivered': None}, 'worker_pid': 63351}
    * {'id': 'e439a4cc-6f3b-4894-b090-5ded11264d0f', 'name': 'api.tasks.sample', 'args': [], 'kwargs': {}, 'type': 'api.tasks.sample', 'hostname': 'celery@host', 'time_start': 1647842591.3436236, 'acknowledged': True, 'delivery_info': {'exchange': '', 'routing_key': 'default', 'priority': 0, 'redelivered': None}, 'worker_pid': 63353}
    * {'id': 'da235e54-e6eb-4d54-8c44-11b92d35c59e', 'name': 'api.tasks.processingTask', 'args': [], 'kwargs': {}, 'type': 'api.tasks.processingTask', 'hostname': 'celery@host', 'time_start': 1647842591.3625274, 'acknowledged': True, 'delivery_info': {'exchange': '', 'routing_key': 'default', 'priority': 0, 'redelivered': None}, 'worker_pid': 63355}
    * {'id': 'ac18b442-66d5-4e4f-ace6-8ccc21994215', 'name': 'api.tasks.sample', 'args': [], 'kwargs': {}, 'type': 'api.tasks.sample', 'hostname': 'celery@host', 'time_start': 1647842591.3367786, 'acknowledged': True, 'delivery_info': {'exchange': '', 'routing_key': 'default', 'priority': 0, 'redelivered': None}, 'worker_pid': 63352}
    * {'id': '71b71398-0df6-4f05-962a-f26915ef90a1', 'name': 'api.tasks.sample', 'args': [], 'kwargs': {}, 'type': 'api.tasks.sample', 'hostname': 'celery@host', 'time_start': 1647842591.330527, 'acknowledged': True, 'delivery_info': {'exchange': '', 'routing_key': 'default', 'priority': 0, 'redelivered': None}, 'worker_pid': 63359}

2 nodes online.
  1. And, Is there any better way to display the count of previous tasks in queue for each respective tasks
Вернуться на верх