使用 Postgres 作为代理设置 Celery - 没有这样的传输 'db'

Setting up Celery with Postgres as broker - No such transport 'db'

我目前正在尝试将 postgres 设置为 Celery 的代理:

broker = "db+postgresql://guest:guest@postgres-localnet/test_db"
app = Celery('tasks', broker=broker)

@app.task
def add(x, y):
    return x + y

当我尝试添加 message/task 时:

>>> import app.tasks as t
>>> t.add.delay(1,2)

我收到以下错误消息:

  File "/usr/local/lib/python3.6/site-packages/kombu/transport/__init__.py", line 64, in resolve_transport
    raise KeyError('No such transport: {0}'.format(transport))
KeyError: 'No such transport: db'

根据文档 (http://docs.celeryproject.org/en/latest/userguide/configuration.html#database-url-examples),这看起来应该可行。

我哪里做错了?

从 celery 4.2 开始,您不能将数据库用作代理。根据文档,only four brokers are supported:

  • redis
  • rabbitmq
  • 平方
  • 动物园管理员

kombu级别的传输,可以参考this reference