[英]Trouble with understanding how RabbitMQ can be used
我目前正在开发一个需要实现 RabbitMQ 的 Python web 应用程序。 该应用程序的结构如下:
客户端连接到 HTTP 服务器
他的连接被发送到连接到我的应用程序主要服务的消息队列
主服务接收消息并向用户提供他的信息
我了解如何使用网站上的文档和教程来完成 RabbitMq 工作,但我无法看到它如何处理实际任务,例如显示 web 页面或打印文件? 我的服务如何连接到消息队列将读取收到的消息并说:“哦,我要显示这个网页”。
抱歉,如果这令人困惑,如果您需要进一步解释我想要得到的东西,请告诉我。
谢谢阅读!
RabbitMq
可以很好地向可以执行长时间运行过程的服务发送消息 - 即下载大文件,生成复杂的 animation。 Web 服务器不能(或不应该)执行长时间运行的进程。
Web 页面向RabbitMq
发送消息(即带有长时间运行过程的参数)并获取唯一编号。 当服务有空闲工作人员时,它会检查队列中是否有新消息,获取它(具有唯一编号)并启动工作人员。 当工人完成工作时,服务将结果发送到具有相同唯一编号的RabbitMQ
。
同时 web 页面使用 JavaScript 运行循环,定期检查RabbitMQ
是否有具有此唯一编号的结果。 如果没有结果则可能会显示progressbar
条,如果有结果则可能会显示此结果。
示例: Celery - 分布式任务队列。
Celery
可以使用RabbitMQ
与Django
或Flask
通信。
(但它可以使用其他模块,即Redis
)
Celery is usually used with a message broker to send and receive messages.
The RabbitMQ, Redis transports are feature complete, but there's also
experimental support for a myriad of other solutions, including using
SQLite for local development.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.