Jak přežít frontu a nepředbíhat

Jak přežít frontu a nepředbíhat

Moje přednáška z PyVa o Celery a obecně frontách v Pythonu. Je to takový lehký úvod, nic do hloubky.

7b2e4bf7ecca28e530e1c421f0676c0b?s=128

Honza Javorek

May 19, 2012
Tweet

Transcript

  1. Jak přežít frontu a nepředbíhat Honza Javorek honza@javorek.net

  2. None
  3. None
  4. None
  5. Fronta v Pythonu? buffer pásová výroba efektivní hromadné zpracování ...

  6. Fronta na webu? web server = GUI fronta = tvrdá

    práce na pozadí úkoly, na které nemá web server čas (uživatel čeká...) nebo zdroje, aby je okamžitě vyřídil a vrátil odpověď
  7. None
  8. Q v angličtině queue čteme [kjů] což je totéž jako

    Q Co konkrétně googlit: message queue
  9. None
  10. Web App Serva', yeah anotha' Web App Serva' Massive Gangsta'

    Message Queue Broka' Black Worker Serva' Brotha's
  11. web servery hážou úkoly do fronty a pokračují ve své

    práci fronta si úkoly hromadí (FIFO) workery (greedy) asynchronně berou úkoly z fronty a zpracovávají je
  12. PROČ?!

  13. rychlá odezva stránek (nemusí se udělat okamžitě? do fronty!) procesy

    na pozadí, generování, přepočítávání, zpracovávání, hromadné odesílání... asynchronní zpracování, distribuce přes více serverů (jak webových, tak workerů)
  14. Ajajajaj! V žádném případě. Je to asynchronní klient-server technologie, ale...

    řízený frontendem pomalý (HTTP) bez záruk Vhodný akorát k tomu, aby se GUI dotazovalo backendu na stav zpracování. AJAJ
  15. změna velikosti obrázku generování různých velikostí náhledů přeformátování videí nahrávání

    velkých souborů odesílání hromadné pošty agregace RSS ...
  16. None
  17. CRON

  18. AMPQ protokol ZeroMQ Amazon SQS RabbitMQ Beanstalk ... Message Broker

  19. ...or

  20. na jednoduché věci stačí samotný http://flask.pocoo.org/snippets/73/ http://hello-redis-tasks.joeyespo.webfactional.com/

  21. na složitější věci je lepší nad broker ještě něco postavit...

  22. na složitější věci je lepší nad broker ještě něco postavit

  23. None
  24. None
  25. Celery

  26. None
  27. jednoduché na instalaci (na localhostu) open source, aktivní vývoj integrace

    s webovými frameworky (Django, Flask, Pylons, ...) podpora pro velké množství brokerů (RabbitMQ, Redis, Beanstalk, MongoDB, CouchDB, JakákolivDB, ...) plánování úkolů (cron) distribuovaná, využívá jádra procesoru (= paralelní) přístup k return values z úkolů hooks, routing, remote-control, monitoring, serialization, ironing, washing dirty dishes, managing fridge, cooking, cleaning, shopping, taking care of pets, ...
  28. None
  29. CRON?

  30. None
  31. je nutné dobře zvládnout instalaci na server framework aplikace v

    balíčku konfigurační soubory nehrát si s init.d – cesta do pekel
  32. Přehršel spouštění, restartování, hlídání...?

  33. Supervisor

  34. démonizuje procesy hlídá je loguje restartuje ...a na to vše

    nemusíte být root
  35. ...už se těšíte na pyvo, co?

  36. ...už se těšíte na pyvo, co? kurňa už neotravuj...

  37. None
  38. fronta – práce všeho druhu, na pozadí broker – posílá

    zprávičky Celery – lepí dohromady naši app, broker, databázi, workery, cron Supervisor – chobotnička na správu procesů na serveru (abychom se nezbláznili z Celery)
  39. None
  40. Díky! Povinná četba: http://www.slideshare.net/tarequeh/life-in-a-queue-using-message-queue-with-django http://www.slideshare.net/richleland/celery-the-distributed-task-queue http://www.turnkeylinux.org/blog/django-celery-rabbitmq www.celeryproject.org http://supervisord.org/ http://home.pacific.net.hk/~rebylee/text/prince/contents.html Http://redis.io

    http://srazy.info/brnenske-pyvo/