A message broker is an architectural pattern for message validation, message transformation and message routing. It mediates communication amongst applications, minimizing the mutual awareness that applications should have of each other in order to be able to exchange messages, effectively implementing decoupling.
芹菜使用message broker architectural pattern。许多实现/代理传输可以与芹菜一起使用,包括RabbitMQ和Django database。
来自Wikipedia:
保留结果是可选的,需要一个结果后端。您可以使用不同的代理和结果后端。Celery Getting Started指南包含更多信息。
您的问题的答案是是您可以启动特定的任务,传递参数而不将Carrot添加到组合中。
芹菜定制消费者将是3.1v中发布的一个功能,现在正在开发中,您可以阅读http://docs.celeryproject.org/en/master/userguide/extending.html关于它的内容。
芹菜经纪人充当一个信息存储库,并将其发布给订阅这些信息的一个或多个员工
所以:芹菜会将消息发送给代理(rabbitmq、redist、芹菜本身通过django db等等),这些消息由一个工人按照代理的协议检索,该协议会记住它们(通常它们是持久的,但可能依赖于您的代理),并由您的工人执行。
任务结果在正在执行的工作任务上可用,您可以配置到store those results的位置,并可以使用this method检索它们。
您可以发布带有芹菜的任务,将参数传递给您的“receiver函数”(您定义的任务,文档中有一些examples,通常您不想在这里传递大的东西(比如queryset),而只需要允许您在执行任务时检索所需内容的最小信息。
一个简单的例子是:
你注册了一个任务
从另一个模块调用:
编辑
在您的编辑之后,我看到您可能希望构建来自其他来源(芹菜除外)的消息,您可以看到here消息格式,它们默认为与该格式相关的pickled对象,因此您将这些消息发布到rabbitmq代理的正确队列中,并且您可以从您的工作人员检索它们。
相关问题 更多 >
编程相关推荐