Как запустить задачу 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'

Я знаю, что он жалуется на ключ свойства, но я попытался добавить один, он требует больше атрибутов в свойствах, я не знаю точный формат сообщения, как я могу вызвать задачу без ошибки?

Вернуться на верх