HTTP上的Python pubsub/消息队列?
我有一个python脚本,它将在需要访问消息队列(RabbitMQ)或通过HTTP接收订阅事件的本地计算机上运行。我研究过几种解决方案,但似乎没有一种是本机设计的,允许桌面客户端通过HTTP访问它们。我认为使用Twisted作为代理也是一种选择。如有任何指导或建议,将不胜感激。提前谢谢 我已经阅读了本教程,它们提供了一些可以解决接收消息问题的库的名称HTTP上的Python pubsub/消息队列?,python,rabbitmq,twisted,publish-subscribe,amqp,Python,Rabbitmq,Twisted,Publish Subscribe,Amqp,我有一个python脚本,它将在需要访问消息队列(RabbitMQ)或通过HTTP接收订阅事件的本地计算机上运行。我研究过几种解决方案,但似乎没有一种是本机设计的,允许桌面客户端通过HTTP访问它们。我认为使用Twisted作为代理也是一种选择。如有任何指导或建议,将不胜感激。提前谢谢 我已经阅读了本教程,它们提供了一些可以解决接收消息问题的库的名称 发件人:send.py #!/usr/bin/env python import pika connection = pika.Blockin
发件人:send.py
#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!')
print " [x] Sent 'Hello World!'"
connection.close()
#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
print ' [*] Waiting for messages. To exit press CTRL+C'
def callback(ch, method, properties, body):
print " [x] Received %r" % (body,)
channel.basic_consume(callback,
queue='hello',
no_ack=True)
channel.start_consuming()
接收器:receive.py
#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!')
print " [x] Sent 'Hello World!'"
connection.close()
#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
print ' [*] Waiting for messages. To exit press CTRL+C'
def callback(ch, method, properties, body):
print " [x] Received %r" % (body,)
channel.basic_consume(callback,
queue='hello',
no_ack=True)
channel.start_consuming()
现在我们可以在终端上试用我们的程序了。首先,让我们使用send.py程序发送一条消息:
$ python send.py
[x] Sent 'Hello World!'
生产者程序send.py将在每次运行后停止。让我们接受它:
$ python receive.py
[*] Waiting for messages. To exit press CTRL+C
[x] Received 'Hello World!'
万岁!我们能够通过RabbitMQ发送我们的第一条消息。您可能已经注意到,receive.py程序不会退出。它将随时准备接收更多消息,并且可能会被Ctrl-C中断
尝试在新终端中再次运行send.py
我们已经学习了如何从命名队列发送和接收消息。是时候进入第2部分并构建一个简单的工作队列了。Choice#1
你可能对此感兴趣
选择#2
如果您希望它位于端口#80上,您不能使用代理进行端口转发吗?这可能很有挑战性,但是
选择#3
如果您的脚本没有与RMQ消息格式紧密结合,您可以尝试芹菜(它在下面使用RMQ),然后您可以尝试,或者如果您希望直接触发任何其他应用程序
把它拿起来可能很费时。然而,芹菜具有很大的灵活性
选择#4
对于我的一个项目,我开发了一个中间web服务(Flask服务)来使用RMQ
不理想,但当时它达到了目的。我决定使用wamp。仍在试验,但目前它运行得很好。是的,我看过本教程,但它似乎是为使用端口5672而设计的。您需要在不同的端口上配置它吗?是的,我想要一些设计为通过HTTP运行的东西,不只是编辑在端口80上运行,因为可能会有其他后果和冲突。是的,当然。这个怎么样,也许会有帮助,因为RabbitMQ使用这个协议。我也研究过这个协议。事实上,我找到了这个链接,在“Web消息传递”下面列出了几种解决方案,但似乎都不成熟。