我有一个python脚本,它将在需要访问消息队列(RabbitMQ)或通过HTTP接收订阅事件的本地计算机上运行。我研究了几种解决方案,但似乎没有一种解决方案可以让桌面客户端通过HTTP访问它们。我认为使用Twisted作为代理也是一种选择。任何指导或建议将不胜感激。提前谢谢。
答案 0 :(得分:0)
我在RabbitMQ site上阅读了本教程,它们提供了一些可以解决接收消息的库的名称。
发件人: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()
接收方:receive.py
#!/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部分并构建一个简单的工作队列。
答案 1 :(得分:0)
选择#1 您可能对此RabbitHub
感兴趣选择#2 如果您希望它在端口#80上,那么您是否可以使用代理进行端口转发?这可能具有挑战性,但
选择#3 如果您的脚本没有与RMQ消息格式紧密结合,您可以尝试芹菜(下面使用RMQ),如果您想要直接触发任何其他应用程序,您可以尝试celery Http gateway或celery web hooks
启动它可能会很费时间。但是,Celery开启了很多灵活性
选择#4 对于我的一个项目,我开发了一个中间Web服务(Flask服务)来使用RMQ 不理想,但那时它起到了目的。
答案 2 :(得分:0)
我决定使用wamp http://wamp.ws/。还在试验它,但它目前运作良好。