HighLoad++

Конференция разработчиков
высоконагруженных систем

Python: Асинхронный ввод/вывод без обработчиков событий

Александр Сабуренков (HeadHunter)

Тезисы:

1. Принципы

  • Event-loop
  • Coroutines
  • Как их скрестить: io-scheduler для сопрограмм

2. Поддержка coroutines в CPython

  • Stackless
  • Greenlets
  • на основе генераторов (pure-python)

3. Реализации coroutine IO scheduler в CPython

  • eventlet
  • libcoev
  • прочие

4. Преимущества - по сравнению с традиционными подходами

  • threadpool: значительно проще справляться с синхронизацией, scheduler ядра отдыхает.
  • processpool: процесс на запрос уже давно слишком расточительно
  • eventloop: не надо выворачивать логику наизнанку, распихивая её по обработчикам событий

5. Результат: под что можно подложить такое

  • pylons/django/wsgi-whatever
  • что делать с доступом к базе
  • и ко всему остальному - на примере memcached

6. Benchmarks

Ссылки по теме:

http://eventlet.net/

http://code.google.com/p/cogen/

http://chiral.j4cbo.com/trac

http://pypi.python.org/pypi/Spawning

http://code.google.com/p/friendlyflow/

http://weightless.io/weightless

http://svn.wiretooth.com/svn/open/asycamore/trunk/asycamore.html#overview

http://code.google.com/p/fibra/

http://opensource.hyves.org/concurrence/

http://trac.softcircuit.com.au/circuits/

По любым вопросам обращайтесь:
Олег Бунин (, +7 (916) 635-95-84 , +7 (495) 646-07-68 , icq: 55370856, skype: oleg.bunin, @olegbunin, oleg-bunin.livejournal.com)
Пресс-служба : Джин Колесников (, +7 (917) 596-05-09 )

Почтовый адрес для отправки документов: ООО «Онтико», 115114, Москва, Летниковская ул., 16, офис 402 +7 (495) 646-07-68

Rambler's Top100
Рейтинг@Mail.ru