【问题标题】:Django-Celery 2.5.3 BROKER_URL Error 'No such transport: mysql'Django-Celery 2.5.3 BROKER_URL 错误“没有这样的传输:mysql”
【发布时间】:2012-04-30 04:51:50
【问题描述】:

我将 celery 从 2.4.X 升级到 celery-2.5.2,然后将 Broker_URL 修改为

BROKER_TRANSPORT = "sqlalchemy"
BROKER_URL = "sqla+mysql://root:root@localhost:3306/db"

这个配置可以通过http://docs.celeryproject.org/en/latest/getting-started/brokers/sqlalchemy.html#broker-sqlalchemy的页面引用

Celery 进程可以成功启动,但是当我调用 .delayapply_async 进程会抛出异常 KeyError: 'No such transport: mysql ' 我对此一无所知..看起来一切都应该是正确的。


追溯

Traceback(最近一次调用最后一次):

File "<console>", line 1, in <module>
File "C:\Python27\lib\site-packages\celery-2.5.2-py2.7.egg\celery\app\task\__init__.py", line 353, in delay
   return self.apply_async(args, kwargs)
File "C:\Python27\lib\site-packages\celery-2.5.2-py2.7.egg\celery\app\task\__init__.py", line 449, in apply_async
   publish = publisher or self.app.amqp.publisher_pool.acquire(block=True)
File "C:\Python27\lib\site-packages\kombu-2.1.5-py2.7.egg\kombu\connection.py", line 625, in acquire
   R = self.prepare(R)
File "C:\Python27\lib\site-packages\kombu-2.1.5-py2.7.egg\kombu\pools.py", line 55, in prepare
   p = p()
File "C:\Python27\lib\site-packages\kombu-2.1.5-py2.7.egg\kombu\pools.py", line 46, in <lambda>
   return lambda: self.create_producer()
File "C:\Python27\lib\site-packages\celery-2.5.2-py2.7.egg\celery\app\amqp.py", line 265, in create_producer
   pub = self.app.amqp.TaskPublisher(conn, auto_declare=False)
File "C:\Python27\lib\site-packages\celery-2.5.2-py2.7.egg\celery\app\amqp.py", line 328, in TaskPublisher
   return TaskPublisher(*args, **self.app.merge(defaults, kwargs))
File "C:\Python27\lib\site-packages\celery-2.5.2-py2.7.egg\celery\app\amqp.py", line 158, in __init__
   super(TaskPublisher, self).__init__(*args, **kwargs)
File "C:\Python27\lib\site-packages\kombu-2.1.5-py2.7.egg\kombu\compat.py", line 61, in __init__
   super(Publisher, self).__init__(connection, self.exchange, **kwargs)
File "C:\Python27\lib\site-packages\kombu-2.1.5-py2.7.egg\kombu\messaging.py", line 69, in __init__
   channel = channel.default_channel
File "C:\Python27\lib\site-packages\kombu-2.1.5-py2.7.egg\kombu\connection.py", line 556, in default_channel
   self.connection
File "C:\Python27\lib\site-packages\kombu-2.1.5-py2.7.egg\kombu\connection.py", line 549, in connection
self._connection = self._establish_connection()
File "C:\Python27\lib\site-packages\kombu-2.1.5-py2.7.egg\kombu\connection.py", line 509, in _establish_connection
   conn = self.transport.establish_connection()
File "C:\Python27\lib\site-packages\kombu-2.1.5-py2.7.egg\kombu\connection.py", line 569, in transport
   self._transport = self.create_transport()
File "C:\Python27\lib\site-packages\kombu-2.1.5-py2.7.egg\kombu\connection.py", line 324, in create_transport
   return self.get_transport_cls()(client=self)
File "C:\Python27\lib\site-packages\kombu-2.1.5-py2.7.egg\kombu\connection.py", line 331, in get_transport_cls
   transport_cls = get_transport_cls(transport_cls)
File "C:\Python27\lib\site-packages\kombu-2.1.5-py2.7.egg\kombu\transport__init__.py", line 94, in get_transport_cls
   _transport_cache[transport] = _get_transport_cls(transport)
File "C:\Python27\lib\site-packages\kombu-2.1.5-py2.7.egg\kombu\transport\__init__.py", line 75, in _get_transport_cls
   transport_module_name, transport_cls_name = resolve_transport(transport)
File "C:\Python27\lib\site-packages\kombu-2.1.5-py2.7.egg\kombu\transport\__init__.py", line 70, in resolve_transport
   raise KeyError("No such transport: %s" % (transport, ))
KeyError: 'No such transport: mysql'

【问题讨论】:

  • 异常是从你调用 .delay 的地方抛出的,还是从 celery 进程抛出的?任务有结果吗?使用(ignore_result=True) 开始任务会改变什么吗?
  • 是的,来自 celery 进程,即使使用 django shell。(manage.py shell),无论我设置ignore_result = True与否,任务都会失败,听起来配置有问题,但是我仍然不知道是什么问题。你有什么建议吗?
  • 我对 2.5.3 和 postgresql 有这个确切的问题。我确定这是一个配置问题,但我终生无法弄清楚解决方案是什么。
  • 可以确认这是 Kombu 的一个 bug,这个 bug 刚刚在 git master 中修复,你现在可以降级到 2.1.3,很快就会有新版本。
  • 非常感谢……太好了。

标签: django sqlalchemy celery kombu


【解决方案1】:

经过一些调试,我已将其追踪到正在安装的 kombu 版本。 Kombu 2.1.5 was released on April 13th 似乎不兼容。我能够通过显式降级到版本 2.1.3 来解决此问题。

【讨论】:

    猜你喜欢
    • 2017-09-14
    • 2021-12-16
    • 2014-09-23
    • 2017-03-27
    • 1970-01-01
    • 2015-07-31
    • 2014-03-25
    • 2017-12-10
    相关资源
    最近更新 更多