![Page 1: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)](https://reader035.vdocument.in/reader035/viewer/2022081803/554bd269b4c905706a8b4d80/html5/thumbnails/1.jpg)
Async AMQP kombu + gevent
https://github.com/renskiy/async_amqp
![Page 2: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)](https://reader035.vdocument.in/reader035/viewer/2022081803/554bd269b4c905706a8b4d80/html5/thumbnails/2.jpg)
Table of contents
• requirements
• AMQP
• gevent + kombu
• solution
• useful links and questions
![Page 3: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)](https://reader035.vdocument.in/reader035/viewer/2022081803/554bd269b4c905706a8b4d80/html5/thumbnails/3.jpg)
Queues are useful for
• process synchronization
• deferred computations
• slow I/O
![Page 4: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)](https://reader035.vdocument.in/reader035/viewer/2022081803/554bd269b4c905706a8b4d80/html5/thumbnails/4.jpg)
Somewhere in the code
![Page 5: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)](https://reader035.vdocument.in/reader035/viewer/2022081803/554bd269b4c905706a8b4d80/html5/thumbnails/5.jpg)
Requirements
• Python 2.x (2.5 or higher)
• gevent
• kombu
![Page 6: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)](https://reader035.vdocument.in/reader035/viewer/2022081803/554bd269b4c905706a8b4d80/html5/thumbnails/6.jpg)
Advanced Message Queuing
Protocol
• Broker
• Message
• All messages are published into Exchange
• Client consumes messages from Queue
• Messages from Exchange are routed to Queue
based on condition specified by Binding
![Page 7: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)](https://reader035.vdocument.in/reader035/viewer/2022081803/554bd269b4c905706a8b4d80/html5/thumbnails/7.jpg)
Exchange types
• direct - exact match of message’s Routing Key and
binding’s one
• topic - basic routing based on wildcard matching of
Routing Key treated as zero or more words separated
by «.» («*» - single word, «#» - zero or more words)
• fanout - simple broadcast
• headers - more complicated routing based on custom
headers matching
![Page 8: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)](https://reader035.vdocument.in/reader035/viewer/2022081803/554bd269b4c905706a8b4d80/html5/thumbnails/8.jpg)
gevent + kombu
![Page 9: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)](https://reader035.vdocument.in/reader035/viewer/2022081803/554bd269b4c905706a8b4d80/html5/thumbnails/9.jpg)
Publisher
![Page 10: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)](https://reader035.vdocument.in/reader035/viewer/2022081803/554bd269b4c905706a8b4d80/html5/thumbnails/10.jpg)
Sync Consumer
![Page 11: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)](https://reader035.vdocument.in/reader035/viewer/2022081803/554bd269b4c905706a8b4d80/html5/thumbnails/11.jpg)
Async Consumer
![Page 12: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)](https://reader035.vdocument.in/reader035/viewer/2022081803/554bd269b4c905706a8b4d80/html5/thumbnails/12.jpg)
Semaphore Consumer
![Page 13: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)](https://reader035.vdocument.in/reader035/viewer/2022081803/554bd269b4c905706a8b4d80/html5/thumbnails/13.jpg)
Useful links
• https://github.com/renskiy/async_amqp
• http://mutlix.blogspot.ru/2007/09/amqp-in-10-
mins-part0.html
• http://sdiehl.github.io/gevent-tutorial/