Давно не писал обзоры приложений и библиотек, но эта мне так понравилась, что не удержался.
Работа с потоками всегда была не самым лёгким занятием для программистов. А если брать особенность работы с потоками в Python ветки 2.x и 3.x (не считая версий 3.2 и 2.7), то кроме потоков нам на голову падали ещё проблемы в GIL (Global Interpreter Lock). Но прогресс не стоит на месте и многопоточность используется уже практически везде. Проблема с cuncerrency встречается всё чаще и решать её приходится так же часто.
При необходимости реализации такой задачи мне под руку попалась библиотеке eventlet (http://eventlet.net/), которая уже использовалась у нас на проекте и мне очень понравилась. Основная задача этой библиотеки - дать возможность реализации высокомашстабируемых не блокирующих I/O задач (highly scalable nonblocking I/O).
Описывать подробно все достоинства и недостатки данной библиотеки не буду, т.к. таких пока было обнаружено не слишком уж много. Больше всего, что мне не понравилось - это, на мой взгляд, не очень хорошая документация (http://eventlet.net/doc/), но открытые исходники с подробными комментариями и кучей примеров эту проблему решили.
В рамках моей задачи, мне понадобилось сделать какое-то подобие COMET-сервера с помощью long polling - один из способов сделать push-уведомления (http://en.wikipedia.org/wiki/Push_technology) для веб-приложений. Основная особенность - клиент делает один за другим (ajax)запросы на сервер, а сервер, в свою очередь отвечает клиенту только тогда, когда у него появились необходимые данные.
Простой пример такого приложения на Django доступен на гитхабе: https://github.com/e0ne/BlogSamples/tree/master/djangolp