Celery генерирует случайную глубину рекурсии, превышенную при вызове ошибки объекта Python с помощью RabbitMQPython

Программы на Python
Ответить
Anonymous
 Celery генерирует случайную глубину рекурсии, превышенную при вызове ошибки объекта Python с помощью RabbitMQ

Сообщение Anonymous »

Когда я пытаюсь добавить задачу в Rabbitmq с Async_Result Иногда я получаю следующую ошибку, если запустить функцию еще раз, то она не показывает никакой ошибки < /p>

Код: Выделить всё

 ERROR:root:maximum recursion depth exceeded while calling a Python object
web    | Traceback (most recent call last):
web    |   File "/home/app/webservice.py", line 75, in execute_task
web    |     async_result = available_tasks[task_name].apply_async(args=[data], kwargs=kwargs)
web    |   File "/usr/local/lib/python3.10/dist-packages/celery/app/task.py", line 572, in apply_async
web    |     return app.send_task(
web    |   File "/usr/local/lib/python3.10/dist-packages/celery/app/base.py", line 766, in send_task
web    |     self.backend.on_task_call(P, task_id)
web    |   File "/usr/local/lib/python3.10/dist-packages/celery/backends/rpc.py", line 164, in on_task_call
web    |     maybe_declare(self.binding(producer.channel), retry=True)
web    |   File "/usr/local/lib/python3.10/dist-packages/kombu/common.py", line 109, in maybe_declare
web    |     return _imaybe_declare(entity, channel, **retry_policy)
web    |   File "/usr/local/lib/python3.10/dist-packages/kombu/common.py", line 164, in _imaybe_declare
web    |     return entity.channel.connection.client.ensure(
web    |   File "/usr/local/lib/python3.10/dist-packages/kombu/connection.py", line 524, in _ensured
web    |     return fun(*args, **kwargs)
web    |   File "/usr/local/lib/python3.10/dist-packages/kombu/common.py", line 150, in _maybe_declare
web    |     entity.declare(channel=channel)
web    |   File "/usr/local/lib/python3.10/dist-packages/kombu/entity.py", line 606, in declare
web    |     self._create_queue(nowait=nowait, channel=channel)
web    |   File "/usr/local/lib/python3.10/dist-packages/kombu/entity.py", line 615, in _create_queue
web    |     self.queue_declare(nowait=nowait, passive=False, channel=channel)
web    |   File "/usr/local/lib/python3.10/dist-packages/kombu/entity.py", line 643, in queue_declare
web    |     ret = channel.queue_declare(
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/channel.py", line 1146, in queue_declare
web    |     return queue_declare_ok_t(*self.wait(
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/abstract_channel.py", line 86, in wait
web    |     self.connection.drain_events(timeout=timeout)
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/connection.py", line 523, in drain_events
web    |     while not self.blocking_read(timeout):
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/connection.py", line 529, in blocking_read
web    |     return self.on_inbound_frame(frame)
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/method_framing.py", line 53, in on_frame
web    |     callback(channel, method_sig, buf, None)
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/connection.py", line 535, in on_inbound_method
web    |     return self.channels[channel_id].dispatch_method(
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/abstract_channel.py", line 143, in dispatch_method
web    |     listener(*args)
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/channel.py", line 276, in _on_close
web    |     self._do_revive()
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/channel.py", line 161, in _do_revive
web    |     self.open()
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/channel.py", line 432, in open
web    |     return self.send_method(
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/abstract_channel.py", line 66, in send_method
web    |     return self.wait(wait, returns_tuple=returns_tuple)
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/abstract_channel.py", line 86, in wait
web    |     self.connection.drain_events(timeout=timeout)
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/connection.py", line 523, in drain_events
web    |     while not self.blocking_read(timeout):
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/connection.py", line 529, in blocking_read
web    |     return self.on_inbound_frame(frame)
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/method_framing.py", line 53, in on_frame
web    |     callback(channel, method_sig, buf, None)
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/connection.py", line 535,  in on_inbound_method
web    |     return self.channels[channel_id].dispatch_method(
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/abstract_channel.py", line 143, in dispatch_method
web    |     listener(*args)
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/channel.py", line 276, in _on_close
web    |     self._do_revive()
web    |   File "/usr/local/lib/python3.10/dist-packages/amqp/channel.py", line 161, in _do_revive
web    |     self.open()
< /code>
Мои конфигурации в Rabbitmq - это < /p>
config = {
"broker": "amqp://rabbitmq:5672//",
"backend": "rpc://rabbitmq:5672//"
}
capp = Celery(__name__, broker=config['broker'], backend=config['backend'])
capp.conf.task_default_queue = 'default'
В моем файле Rabbitmq.conf есть только следующая строка без комментариев: Consumer_timeout = 36000000
Приложение Python и RabbitMQ находятся в контейнерах Docker на та же сеть.
Моя версия Python — 3.10, сельдерей — 5.1.2, а RabbitMQ — 3.11.7

Подробнее здесь: https://stackoverflow.com/questions/793 ... hon-object
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»