用于通过Django控制外部python程序的消息队列

时间:2016-01-04 21:01:20

标签: python django rabbitmq zeromq pyzmq

我曾在之前的项目中使用ZeroMQ在不同服务器上的两个不同的python程序之间发送消息。我现在有一个程序,我想用Django作为前端。

在消息队列和python上进行大量的Google搜索,最常见的事情是Celery和RabbitMQ。但这似乎不像我在寻找。 Celery似乎很适合在Django应用程序中使用生成任务并处理它们并将结果写回Django。

我正在寻找的是一个解决方案,允许我在创建或删除新模型项目时将消息发送到其他python程序。当另一个python程序收到错误os simillar时,我想将消息发送回Django并创建一个新的Error Model项。

这样做有好办法吗?我能做的是使用不同的技术从django发送和回收。我可以将简单的UDP发送到我的其他程序,并通过HTTP API将内容发回到django。但我认为使用某种形式的消息传递系统处理这种情况并确保消息到达会更好。

1 个答案:

答案 0 :(得分:1)

不知道你被困在哪里,所以我会试着掩盖一切。

在我正在进行的项目中,我们正在使用API​​和rabbitmq来传递消息。

我们有一个python,非django进程监听rabbitmq队列,所以当Django需要与它交谈时,我们只需将JSON格式的消息泵入队列,然后进程选择消息并处理它们。

您实际上可以将django模型和其他API与非django应用程序一起使用。如果这是你想要做的,这里有一个开始的链接

http://blog.gabrielsaldana.org/using-django-models-in-external-python-scripts/

我们的其他外部流程需要将信息传递回Django,因此我们只创建了一些API端点,外部流程只使用HTTP POST来发送数据。

要在每次创建或保存模型时执行操作,您需要查看Django信号。

https://docs.djangoproject.com/en/1.9/topics/signals/

如果我仍然缺少某些内容,您需要更好地解释您要解决的问题究竟是什么