Python 芹菜作为网络酒吧/酒吧活动

Python 芹菜作为网络酒吧/酒吧活动,python,celery,publish-subscribe,Python,Celery,Publish Subscribe,我想建立一个网络发布/订阅事件系统,但也需要能够异步运行任务。我试着用芹菜来做举重,但我觉得我正在尝试填充一大堆东西,只是为了让它工作 我有两台机器(输入和输出),它们都可以访问RabbitMQ。我想有一个主程序启动一个循环,等待输入(由网络摄像头检测到的移动)。我设置了输入机器启动main.py,它启动芹菜任务,该任务由输入机器子床上的工作人员监控到“输入”队列。此任务只是运行while True循环,直到检测到某个输入,然后将另一个名为('project.entered_room'不做任何操

我想建立一个网络发布/订阅事件系统,但也需要能够异步运行任务。我试着用芹菜来做举重,但我觉得我正在尝试填充一大堆东西,只是为了让它工作

我有两台机器(输入和输出),它们都可以访问RabbitMQ。我想有一个主程序启动一个循环,等待输入(由网络摄像头检测到的移动)。我设置了输入机器启动main.py,它启动芹菜任务,该任务由输入机器子床上的工作人员监控到“输入”队列。此任务只是运行while True循环,直到检测到某个输入,然后将另一个名为('project.entered_room'不做任何操作)的芹菜任务调用到“output”队列

同时,在output_机器上,我有一个芹菜实例在观察“output”队列,其中有一个任务名为('project.entered_room',它响应有人进入房间)

所以,当在输入机器上检测到输入时,任务在输出机器上运行。我可以让这项工作,但会遇到很多进口问题和其他头痛。有没有更简单的方法来实现这一点?我完全搞错了?我用错工具了吗


我研究了许多不同的框架,包括电路和twisted。Twisted非常复杂,我感觉就像是用手提钻敲钉子一样。

芹菜只是一个任务管理器

RabbitMQ是您的消息代理。 我将在您的两台机器之间实现RabbitMQ通道,并使用发布/订阅来管理您的输入


也许这可以帮助你

我建议跳过芹菜,直接使用它的pub/sub功能。例如,您可以通过运行。然后,在您的输入机器上,当检测到某些内容时,您将消息发布到一个频道。在输出机器上,您订阅该频道并对事件进行操作

例如,您的输入机器可以使用如下内容:

导入redis
def发布(消息):
r=redis.redis(host=“redis”)
r、 发布(“测试频道”,消息)
然后在输出端:

导入时间
导入redis
def main():
r=redis.redis(host=“redis”,decode\u responses=True)
p=r.pubsub(忽略订阅消息=True)
p、 订阅(“测试频道”)
尽管如此:
message=p.get_message()
如果消息:
打印(message.get(“数据”),“”)
#做更多的事情。。。
睡眠时间(0.001)
通过这种方式,您可以在输入和输出机器之间发送纯文本或JSON数据

在这里找到一个示例实现:

既然RabbitMQ可以执行pubsub(OP使用的是RabbitMQ),那么Redis相对于RabbitMQ有什么优势?