http://nanopipe.readthedocs.io/en/latest/
https://habrahabr.ru/post/326880/ RabbitMQ vs NATS
https://content.pivotal.io/blog/understanding-when-to-use-rabbitmq-or-apache-kafka
http://www.informit.com/articles/article.aspx?p=2234249 Python socket programming
http://austingwalters.com/introduction-to-ipc-sockets/
http://austingwalters.com/io-multiplexing/
http://austingwalters.com/introduction-to-ipc-interprocess-communication/
http://www.reddit.com/r/programming/comments/250v4l/intro_to_ipc_interprocess_communication/
http://zinascii.com/2014/a-posix-queue-implementation.html
http://www.objc.io/issue-10/ip-tcp-http.html
http://habrahabr.ru/post/209144/
http://habrahabr.ru/post/152345/
http://habrahabr.ru/post/209524/
http://beej.us/guide/bgnet/output/html/multipage/index.html
http://www.beej.us/guide/bgnet/output/print/bgnet_A4.pdf
http://ttsiodras.github.io/asn1.html ASN.1
http://agiliq.com/blog/2013/07/basics-wsgi/ WSGI
http://mrjoes.github.io/2013/06/21/python-realtime.html
http://programmers.stackexchange.com/questions/171734/difference-between-a-socket-and-a-port
http://www.linuxforu.com/2011/04/getting-started-with-inotify/
http://www.binarytides.com/python-socket-programming-tutorial/
http://www.linuxforu.com/2011/08/creating-your-own-server-the-socket-api-part-1/
http://www.linuxforu.com/2011/09/creating-your-own-server-the-socket-api-part-2/
http://www.linuxforu.com/2011/11/socket-api-part-4-datagrams/
http://habrahabr.ru/post/184262/
http://www.reddit.com/r/Python/comments/zkg9s/python_and_networking/
GEARMAN
https://habrahabr.ru/post/212761/
Celery
https://denibertovic.com/posts/celery-best-practices/
https://habrahabr.ru/company/selectel/blog/326956/ uWSGI Spooler
http://blog.domanski.me/how-celery-fixed-pythons-gil-problem/
https://techarena51.com/index.php/running-asynchronous-background-tasks-linux-python-3-flask-celery/
https://blog.balthazar-rouberol.com/celery-best-practices
https://news.ycombinator.com/item?id=7909201
http://abhishek-tiwari.com/post/amqp-rabbitmq-and-celery-a-visual-guide-for-dummies
https://tests4geeks.com/tutorials/distribute-tasks-python-celery-rabbitmq/
http://bookofstranger.com/asynchronous-tasks-using-django-celery-and-rabbitmq/
GEVENT
http://blog.pythonisito.com/2012/07/introduction-to-gevent.html
http://sdiehl.github.io/gevent-tutorial/
http://sdiehl.github.io/gevent-tutorial/
http://news.ycombinator.com/item?id=3031089
http://blog.pythonisito.com/2012/08/building-web-applications-with-gevents.html
http://www.appneta.com/blog/python-and-gevent/
RQ (Redis Queue) is a simple Python library for queueing jobs and processing them in the background with workers.
Message Queue
https://habrahabr.ru/company/oleg-bunin/blog/316458/
http://zeromq.org/whitepapers:brokerless
https://paolopatierno.wordpress.com/2015/08/30/amqp-isnt-so-scary-if-you-know-how-to-start/
https://habrahabr.ru/post/278237/
http://stackoverflow.com/questions/8261654/messaging-confusion-pub-sub-vs-multicast-vs-fan-out
MQTT
http://programmingwithreason.com/article-mqtt-in-depth.html
http://blogs.vmware.com/vfabric/2013/02/choosing-your-messaging-protocol-amqp-mqtt-or-stomp.html
http://www.rabbitmq.com/mqtt.html
http://www.slideshare.net/paolopat/mqtt-iot-protocols-comparison
http://blog.jonharrington.org/displaying-mqtt-messages-in-a-browser-in-real-time/
http://java.dzone.com/articles/amqp-vs-mqtt-some-resources
http://antirez.com/news/75
http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
http://www.bravenewgeek.com/dissecting-message-queues/
http://www.bravenewgeek.com/tag/message-queues/
http://eventuallyconsistent.net/2013/08/12/messaging-as-a-programming-model-part-1/
http://eventuallyconsistent.net/2013/08/14/messaging-as-a-programming-model-part-2/
http://www.warski.org/blog/2014/07/evaluating-persistent-replicated-message-queues/
http://habrahabr.ru/post/165981/
http://habrahabr.ru/post/62502/ AMQP
http://www.rabbitmq.com/blog/2011/06/30/zeromq-erlang/
http://mqmastery.com/2017/02/03/content-enricher-pattern-rabbitmq/
RabbitMQ is one of the leading implementation of the AMQP protocol (along with Apache Qpid). Therefore, it implements a broker architecture, meaning that messages are queued on a central node before being sent to clients. This approach makes RabbitMQ very easy to use and deploy, because advanced scenarios like routing, load balancing or persistent message queuing are supported in just a few lines of code. However, it also makes it less scalable and “slower” because the central node adds latency and message envelopes are quite big.
ZeroMQ is a very lightweight messaging system specially designed for high throughput/low latency scenarios like the one you can find in the financial world. Zmq supports many advanced messaging scenarios but contrary to RabbitMQ, you’ll have to implement most of them yourself by combining various pieces of the framework (e.g : sockets and devices). Zmq is very flexible but you’ll have to study the 80 pages or so of the guide (which I recommend reading for anybody writing distributed system, even if you don’t use Zmq) before being able to do anything more complicated that sending messages between 2 peers.
ZeroMQ
http://www.drdobbs.com/architecture-and-design/zeromq-the-design-of-messaging-middlewar/240165684
https://news.ycombinator.com/item?id=5531192
https://news.ycombinator.com/item?id=2715937
http://pyfunc.blogspot.com/2012/03/introducing-mq-and-pyzmq-through.html
http://nichol.as/zeromq-an-introduction
http://lanyrd.com/2012/pycon/spbzp/
http://www.infoq.com/presentations/Distributed-Systems-with-ZeroMQ-and-gevent
http://blog.pythonisito.com/2012/08/using-zeromq-devices-to-support-complex.html
RabbitMQ
https://habrahabr.ru/company/oleg-bunin/blog/310418/
http://habrahabr.ru/post/149694/
http://habrahabr.ru/post/150134/
http://habrahabr.ru/post/200870/ 3
http://habrahabr.ru/post/201096/ 4 routing
http://habrahabr.ru/post/201178/ 5 topics
http://habrahabr.ru/post/236221/ 6
http://highload.guide/blog/101-RabbitMQ-way-of-cooking.html
https://habrahabr.ru/company/oleg-bunin/blog/310418/
http://mqmastery.com/2017/01/26/replace-database-polling-rabbitmq/
https://asafdav2.github.io/2017/rabbit-mq-persistentcy-vs-durability/
https://leanpub.com/rmq-patterns e-book
http://blog.runnable.com/post/144321351856/introducing-ponos-a-rabbitmq-based-worker-server
https://github.com/rabbitmq/internals/
http://courses.objectzen.com/rabbitmq
https://m.alphasights.com/speaking-rabbit-a-look-into-amqps-frame-structure-fbb81516b794#.vfsqj2n5i
http://courses.objectzen.com/rabbitmq
https://techietweak.wordpress.com/2015/08/14/rabbitmq-a-cloud-based-message-oriented-middleware/
https://ivanyu.me/blog/2015/02/16/delayed-message-delivery-in-rabbitmq/
http://abhishek-tiwari.com/post/amqp-rabbitmq-and-celery-a-visual-guide-for-dummies
https://medium.com/@mschuett/rabbitmq-ec2-auto-clustering-f40af4cebe69
High Availability
http://habrahabr.ru/post/193332/
www.rabbitmq.com/clustering.html
To have RabbitMQ start as a daemon by default, run the following:
chkconfig rabbitmq-server on
# To start/stop the service: /sbin/service rabbitmq-server start/stop/restart/status
/etc/sysconfig/rabbitmq — В нем принято указывать какие-либо низкоуровневые параметры (например ulimit)
/etc/rabbitmq/rabbitmq.conf — Настраиваются переменные окружения для запуска erlang
/etc/rabbitmq/rabbitmq.config — Настраивается сам rabbitmq-server
Подтверждение (ack) отправляется подписчиком для информирования RabbitMQ о том, что полученное сообщение было обработано и RabbitMQ может его удалить.
sudo rabbitmqctl list_queues name messages_ready messages_unacknowledged
sudo rabbitmqctl list_queues
next скрипт выводит и обновляет каждые 2 секунды таблицу со списком очередей: имя очереди; количество сообщений в обработке; количество сообщений готовых к обработке; общее количество сообщений; устойчивость очереди к перезагрузке сервиса; является ли временной очередью; количество подписчиков
watch 'sudo /usr/sbin/rabbitmqctl list_queues name messages_unacknowledged messages_ready messages durable auto_delete consumers | grep -v "\.\.\." | sort | column -t;'
https://functionwhatwhat.com/why-you-should-not-use-an-rdbms-for-messaging/
http://aphyr.com/posts/315-call-me-maybe-rabbitmq
http://www.techtalkshub.com/rabbitmq-is-the-new-king-spring-java/
http://www.brettdangerfield.com/post/realtime_data_tag_cloud/
http://habrahabr.ru/post/62502/ AMPQ
http://www.rabbitmq.com/tutorials/tutorial-one-php.html
http://www.pyvideo.org/search/?models=videos.video&q=rabbitmq
http://www.wunki.org/posts/2013-04-22-crossing-the-language-barrier-with-rabbitmq.html
http://www.laurentluce.com/posts/distributed-messaging-using-rabbitmq-and-python/
http://habrahabr.ru/search/?q=rabbitmq
http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/
http://techportal.inviqa.com/2013/11/18/let-rabbitmq-do-the-work-in-your-symfony2-application/
Twisted
http://ninaevseenko.github.io/async_twisted_ru/async_twisted_ru.pdf
https://www.youtube.com/watch?v=5C3e5f76BuU (ru)
http://pyvideo.org/video/2569/lets-learn-twisted-python
https://glyph.twistedmatrix.com/2014/05/the-report-of-our-death.html
https://www.youtube.com/watch?v=qmdQttKEHBM
http://krondo.com/?page_id=1327
http://aosabook.org/en/twisted.html
http://www.wallix.org/2011/08/30/getting-started-with-twisted/
http://orestis.gr/blog/2014/02/03/wsgi-twisted-and-server-sent-events/
BOOK
http://avaxhome.cc/ebooks/programming_development/1449326110.html
http://avaxhome.cc/ebooks/programming_development/1449326110_Twiste.html
http://www.pyvideo.org/search?models=videos.video&q=twisted
http://habrahabr.ru/search/?q=twisted
http://stackoverflow.com/questions/14686136/python-ipc-twisted-rabbitmq
http://technicae.cogitat.io/2009/06/sinfonia-on-messaging-with-txamqp-part_18.html
http://stackoverflow.com/questions/4100455/using-nose-to-test-txmongo-dependent-code
http://smira.ru/posts/20100215profiling-twisted-applications.html#.Utxq5xDTmM8
http://smira.ru/posts/20101028highload-2010-twisted-python-development.html#.Utxq7BDTmM8
http://smira.ru/posts/20091013hl-2009-twisted-framework.html#.UtxrFxDTmM8
http://smira.ru/posts/20090925hl2009-twisted-framework-python.html#.UtxrIRDTmM8
http://smira.ru/posts/20090608amqp-in-russian.html#.UtxrLhDTmM8 AMPQ
http://www.maartendamen.com/2011/06/introducing-houseagent/
WebSockets