#python #redis #celery
#python #редис #сельдерей
Вопрос:
После завершения задачи celery записывает ее в redis. Однако ключ записи определяется самим сельдереем (я думаю, что это идентификатор задачи). Я хочу дать конкретные имена, потому что так другие службы знают свое место.
В моем коде есть один производитель, который создает задачи и много рабочих. Прямо сейчас я использую tasks_name.get() после завершения всех задач и создания новых записей redis в соответствии с моим соглашением об именах. Но это кажется таким ненужным и медленным. Сельдерей должен просто использовать мое соглашение.
Я подумываю о их переименовании, но если это возможно. Как я могу получать идентификаторы от производителя. Может быть, какой-то пользовательский класс RedisBackend, но это слишком глубоко.
Комментарии:
1. Разве другие службы не должны просто знать идентификатор задачи, чтобы они могли использовать API Celery для запроса и декодирования результирующего значения?
Ответ №1:
Вы можете присвоить задаче пользовательский идентификатор, используя task_id
параметр при отправке задачи. Он поддерживается apply
и apply_async
методами задачи Сельдерея и send_task
методом класса Сельдерея.
Комментарии:
1. Все еще добавляет префикс, но я думаю, что этого достаточно. Спасибо.