Я создаю задачу сельдерея в ситуации, когда производители задач больше, чем потребители (рабочие). Теперь, когда мои очереди заполняются, а рабочие потребляют в FCFS, могу ли я выполнить конкретную задачу (заданную task_id) мгновенно?Сельдерей - Задача task_id, выполнить задачу
для например: -
Мои задачи заполняются следующим образом. [1,2,3,4,5,6,7,8,9,0]
. Теперь задачи извлекаются из нулевого индекса. Теперь возникает ситуация, когда я хочу выполнить задачу 8 прежде всего. Как я могу это сделать?
Работник не должен выполнять эту задачу (потому что может быть ситуация, когда рабочий уже занят). Его можно запустить непосредственно из приложения. И когда задача завершена (либо из рабочего, либо непосредственно из приложения), она должна быть удалена из очереди.
Я знаю, как принудительно отменять задание (задано task_id), но как я могу выполнить задачу с идентификатором?
Я думаю, что вы можете использовать обходной путь с Отозвать задачи по ID и отправить его обратно к брокеру с наивысшим приоритетом (но AFAIK это доступно только для [RabbitMQ] (https://github.com/celery/celery/issues/2635 # issuecomment-173597053)) –
Если я отменяю задачу, могу ли я передать параметры этой задаче? так что я могу выполнить эту задачу на уровне приложения. – PythonEnthusiast
Я думал, что вы можете получить AsyncResult от task_id и получить от него аргументы, а затем отменить эту задачу и создать новую. –