純Python的RabbitMQ/AMQP 0-9-1客戶端庫:Pika
Pika是一個純Python實現的AMQP 0-9-1協議,它嘗試與底層網絡支持庫之間保持獨立。支持多種適配器,如TwistedConnection(適用于Twisted異步包)、TornadoConnection(適用于Tornado IO循環)等。
- Currently supports Python 2.6 and Python 2.7 only. 3.2+ support planned.
- Since threads aren't appropriate to every situation, it doesn't require threads. It takes care not to forbid them, either. The same goes for greenlets, callbacks, continuations and generators. It is not necessarily thread-safe however, and your milage will vary.
- People may be using direct sockets, asyncore, plain old select(), or any of the wide variety of ways of getting network events to and from a python application. Pika tries to stay compatible with all of these, and to make adapting it to a new environment as simple as possible. </ul>
Example
Here is the most simple example of use, sending a message with the BlockingConnection adapter:
import pika connection = pika.BlockingConnection() channel = connection.channel() channel.basic_publish(exchange='example', routing_key='test', body='Test Message') connection.close()
And an example of writing a blocking consumer:
import pika connection = pika.BlockingConnection() channel = connection.channel() for method_frame, properties, body in channel.consume('test'): # Display the message parts and ack the message print method_frame, properties, body channel.basic_ack(method_frame.delivery_tag) # Escape out of the loop after 10 messages if method_frame.delivery_tag == 10: break # Cancel the consumer and return any pending messages requeued_messages = channel.cancel() print 'Requeued %i messages' % requeued_messages connection.close()
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!