Librabbitmq 2.0.0 с Python 3 дает TypeError: не может выбирать объекты памяти

Я использую последнюю главную ветку git-репозитория https://github.com/celery/librabbitmq и устанавливаю librabbitmq==2.0.0 для Python 3.6, следуя инструкциям в readme

Использование разрабатываемой версии

Вы можете клонировать репозиторий, выполнив следующие действия:

$ git clone git://github.com/celery/librabbitmq.git

Затем установите его, выполнив следующие действия:

$ cd librabbitmq
$ make install        # or make develop

Это работает нормально (после установки определенных двоичных файлов для компиляции c в ОС), но когда я делаю небольшой a+b добавить задачу и вызвать ее add.delay(2,2) это терпит неудачу со следующей ошибкой. Я посмотрел вверх и увидел, что Celery 4 использует json в качестве сериализатора, поэтому ясно, что это не потому, что если сериализация рассола

  1. Переход от librabbitmq к брокеру pyamqp работает нормально
  2. Точно такая же ситуация в MacOS и Ubuntu 16

[2018-04-30 23: 40: 02,956: CRITICAL / MainProcess] Неустранимая ошибка: SystemError("возвращен результат с набором ошибок",) Traceback (последний вызов был последним): файл "/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/kombu/messaging.py", строка 624, в _receive_callback возвращает on_m(сообщение), если on_m еще файл self.receive(декодированный, сообщение)"/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/consumer/consumer.py", строка 570, в обратных вызовах on_task_received, файл"/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/strategy.py", строка 145, в файле дескриптора task_message_handler (req)"/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/worker.py", строка 221, в _process_task_sem возвращает файл self._quick_acquire(self._process_task, req) Файл "/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/kombu/async/semaphore.py", строка 62, в обратном вызове захвата (*part_args, ** частичный_kwargs) файл "/Users/somghosh/.virtualenvs/c tdb / lib / python3.6 / site-packages / celery / worker / worker.py ", строка 226, в файле _process_task req.execute_using_pool(self.pool)"/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/request.py", строка 531, в execute_using_pool correlation_id=task_id, файл"/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/concurrency/base.py", строка 155, в параметрах apply_async **) Файл"/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/billiard/pool.py", строка 1486, в собственной папке apply_async._quick_put((TASK, (result._job, None, func, args, kwds))) Файл "/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/concurrency/asynpool.py", строка 813, в теле send_job = dumps(tup, protocol=protocol) Ошибка TypeEr: невозможно выбрать объекты просмотра памяти

Вышеуказанное исключение явилось прямой причиной следующего исключения:

Трассировка (последний вызов был последним): файл "/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/worker.py", строка 203, в начале self.blueprint.start(self) Файл "/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/bootsteps.py", строка 119, в стартовом файле step.start(parent) "/ Users / somghosh /. virtualenvs / ctdb / lib / python3.6 / site-packages / celery / bootsteps.py ", строка 370, в начале возвращает файл self.obj.start()" /Users/somghosh/.virtualenvs/ctdb/lib/python3. 6 / site-packages / celery / worker / consumer / consumer.py ", строка 320, в стартовом файле blueprint.start (self)" "/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/ celery / bootsteps.py ", строка 119, в стартовом файле step.start (родительский)" /Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/consumer/consumer.py ", строка 596, в стартовом файле c.loop(*c.loop_args()) "/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/loops.py", строка 88, в asynloop next(loop) File "/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/kombu/async/hub.py", строка 354, в файле create_loop cb(*cbargs)"/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/kombu/transport/base.py", строка 236, в файле on_readable reader(loop)." /Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/kombu/ transport / base.py ", строка 218, в файле _readflow_events(timeout=0)" /Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/librabbitmq-2.0.0-py3.6- macosx-10.6-intel.egg / librabbitmq /init.py ", строка 227, в теге_ответа self._basic_recv(время ожидания) SystemError: возвратил результат с установленной ошибкой

1 ответ

Эту библиотеку не рекомендуется использовать в качестве rabbitmq-брокера с сельдереем. Вместо этого, пожалуйста, попробуйте py-amqp. это более поддерживается и менее глючит.

Другие вопросы по тегам