Как запустить задачу Django Celery Shared с помощью redis-cli
У меня есть задача Celery, определенная в приложении django следующим образом
from celery import shared_task
@shared_task
def save_notification(notification):
print("Received notif", notification)
для тестирования в контейнере django я ввожу следующую команду для запуска celery worker
celery -A hello_django worker --loglevel=INFO
он запускается, как и ожидалось, и задачи обнаруживаются, теперь самое главное - мне нужно запустить задачу, используя некоторые аргументы. Поэтому для тестирования я использую следующую команду.
redis-cli -n 0 RPUSH celery "{\"task\":\"notifications.tasks.save_notification\", \"args\":[\"I am notification\"]}"
Команды успешно публикуются и выводят некоторое целое число, но на рабочей стороне происходит сбой и возникает следующая ошибка
[2024-05-13 13:03:55,610: CRITICAL/MainProcess] Unrecoverable error: KeyError('properties')
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/celery/worker/worker.py", line 202, in start
self.blueprint.start(self)
File "/usr/local/lib/python3.12/site-packages/celery/bootsteps.py", line 116, in start
step.start(parent)
File "/usr/local/lib/python3.12/site-packages/celery/bootsteps.py", line 365, in start
return self.obj.start()
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/celery/worker/consumer/consumer.py", line 340, in start
blueprint.start(self)
File "/usr/local/lib/python3.12/site-packages/celery/bootsteps.py", line 116, in start
step.start(parent)
File "/usr/local/lib/python3.12/site-packages/celery/worker/consumer/consumer.py", line 742, in start
c.loop(*c.loop_args())
File "/usr/local/lib/python3.12/site-packages/celery/worker/loops.py", line 97, in asynloop
next(loop)
File "/usr/local/lib/python3.12/site-packages/kombu/asynchronous/hub.py", line 373, in create_loop
cb(*cbargs)
File "/usr/local/lib/python3.12/site-packages/kombu/transport/redis.py", line 1344, in on_readable
self.cycle.on_readable(fileno)
File "/usr/local/lib/python3.12/site-packages/kombu/transport/redis.py", line 569, in on_readable
chan.handlers[type]()
File "/usr/local/lib/python3.12/site-packages/kombu/transport/redis.py", line 974, in _brpop_read
self.connection._deliver(loads(bytes_to_str(item)), dest)
File "/usr/local/lib/python3.12/site-packages/kombu/transport/virtual/base.py", line 1017, in _deliver
callback(message)
File "/usr/local/lib/python3.12/site-packages/kombu/transport/virtual/base.py", line 636, in _callback
message = self.Message(raw_message, channel=self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/kombu/transport/virtual/base.py", line 323, in __init__
properties = payload['properties']
~~~~~~~^^^^^^^^^^^^^^
KeyError: 'properties'
Я знаю, что он жалуется на ключ свойства, но я попытался добавить один, он требует больше атрибутов в свойствах, я не знаю точный формат сообщения, как я могу вызвать задачу без ошибки?