Работаем с rabbitmq в python используя kombu + gevent. (rinat khabibiev)

13
Async AMQP kombu + gevent https://github.com/renskiy/async_amqp

Upload: it-

Post on 08-May-2015

383 views

Category:

Education


5 download

DESCRIPTION

Хабибиев Ринат - Senior Python Developer / Россия, Москва Тема доклада - показать как легко и просто начать использовать очереди сообщений в Python в асинхронных воркерах, использующих gevent. http://www.it-sobytie.ru/events/2040

TRANSCRIPT

Page 1: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)

Async AMQP kombu + gevent

https://github.com/renskiy/async_amqp

Page 2: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)

Table of contents

• requirements

• AMQP

• gevent + kombu

• solution

• useful links and questions

Page 3: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)

Queues are useful for

• process synchronization

• deferred computations

• slow I/O

Page 4: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)

Somewhere in the code

Page 5: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)

Requirements

• Python 2.x (2.5 or higher)

• gevent

• kombu

Page 6: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)

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)

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)

gevent + kombu

Page 9: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)

Publisher

Page 10: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)

Sync Consumer

Page 11: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)

Async Consumer

Page 12: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)

Semaphore Consumer

Page 13: Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)

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/