Как я могу изменить имена ключей в сельдерее

#python #redis #celery

#python #редис #сельдерей

Вопрос:

После завершения задачи celery записывает ее в redis. Однако ключ записи определяется самим сельдереем (я думаю, что это идентификатор задачи). Я хочу дать конкретные имена, потому что так другие службы знают свое место.

В моем коде есть один производитель, который создает задачи и много рабочих. Прямо сейчас я использую tasks_name.get() после завершения всех задач и создания новых записей redis в соответствии с моим соглашением об именах. Но это кажется таким ненужным и медленным. Сельдерей должен просто использовать мое соглашение.

Я подумываю о их переименовании, но если это возможно. Как я могу получать идентификаторы от производителя. Может быть, какой-то пользовательский класс RedisBackend, но это слишком глубоко.

Комментарии:

1. Разве другие службы не должны просто знать идентификатор задачи, чтобы они могли использовать API Celery для запроса и декодирования результирующего значения?

Ответ №1:

Вы можете присвоить задаче пользовательский идентификатор, используя task_id параметр при отправке задачи. Он поддерживается apply и apply_async методами задачи Сельдерея и send_task методом класса Сельдерея.

Комментарии:

1. Все еще добавляет префикс, но я думаю, что этого достаточно. Спасибо.