当前位置: 首页 > 知识库问答 >
问题:

使用Postgres作为代理设置芹菜-没有这样的传输“db”

周飞语
2023-03-14

我目前正试图让postgres成为芹菜的经纪人:

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

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

当我尝试添加消息/任务时:

>>> 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示例),看起来这应该有效。

我在这里做错了什么?

共有1个答案

岑毅庵
2023-03-14

从芹菜4.2开始,您不能使用数据库作为代理。根据文档,仅支持四个代理:

    < li>redis < li>rabbitmq < li>sqs 动物园管理员

对于昆布级运输,您可以参考此参考。

 类似资料:
  • 我是芹菜、Redis和RabbitMQ的新手。 目前,我正在使用RabbitMQ作为消息代理,并且在配置中没有设置任何内容。(使用Django、MySQL) 我想知道是否有可能使用Redis作为后端的结果存储,同时将RabbitMQ用作消息代理。 我知道的只是添加一些设置,

  • 问题内容: 我正在尝试将类的方法用作django-celery任务,并使用@task装饰器对其进行标记。阿南德·杰亚哈(Anand Jeyahar)询问,这里也描述了同样的情况。是这样的 问题是,即使我使用这样的类实例,也需要至少两个参数,这意味着指针未命中。 更多信息: 由于继承,我无法将类转换为 模块 方法在很大程度上依赖于类成员,所以我不能使它们成为 静态的 标记 类 与@task装饰任务,

  • 问题内容: 我正在运行Django 1.8 + Celery 4.0.2 Celery配置良好,可以在Redis后端本地运行Django任务。但是,当我尝试使用设置时,此设置无效。其他设置则不是这种情况,例如 具体来说,我看到的是 lib / python2.7 / site-packages / celery / app / task.py(520)apply_async()因此,CELERY_

  • 当我运行批处理文件以启用芹菜时: 出现以下错误: 回溯(最后一次调用): 文件“C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32\lib\runpy.py”,第193行,作为主“main”,mod\u spec) 文件“C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32

  • 由于芹菜是作业队列/任务队列,因此名称说明了它可以维护其任务并处理它们。那么为什么它需要像rabbymq或redis这样的消息代理呢?

  • 现在,我想将< code>register事件发布到某个特殊的交换,我可以使用celery远程检索和处理它。 实际上,我已经使用了函数来实现这一点,但是它必须传递来指示应该执行哪个任务并消费它。所以它似乎不太适合我的目标。 我想要的就是这样: 向某些发布消息; 远程机器1订阅此或并捕获消息,用于执行任务; 远程机器2-与机器1相同但执行另一个任务-接收(可能需要回复某些) 例如,就像这个工作流一样