Направете Django зелено

Имам команда за управление на Django, която прави хиляди TCP/UDP заявки. Използвах Gevent, за да ускоря това, тъй като преструктурирах кода си, за да работи като съпрограми. Връзките на сокета вече не блокират, но от това, което прочетох, части от Django все още не са зелени. (Под зелено имам предвид използването на зеленички.)

Бихте ли ми казали кои части от Django не са зелени и какво мога да направя, за да ги направя зелени? Има някои части, свързани с DB, които все още блокират според мен. Има ли някакви библиотеки/пачове за Django, които да ми помогнат да го направя зелен?

Не съм много загрижен дали цикълът на заявка/отговор е зелен или не, следователно Gunicorn ще ми помогне ли?

Благодаря


person Mridang Agarwalla    schedule 14.02.2012    source източник


Отговори (2)


Gevent monkey patcher ще коригира стандартната библиотека, за да бъде удобна за Greenlet. Това трябва да отнеме много често срещани Django повиквания.

from gevent import monkey; monkey.patch_all()

Що се отнася до базите данни, обикновено интерфейсите блокират. Ако използвате PostgreSQL, потърсете psyco_gevent към monkey patch psycopg2 за сътрудничество с гевент.

person Stephen Diehl    schedule 16.02.2012

gevent няма да озеленява библиотеки на трети страни, стига да използват или C разширения, или други библиотеки на трети страни, които използват C разширения. Ако се използват стандартни библиотеки, gevent може да ги закърпи маймунски.

Някои драйвери на базата данни разчитат, разбира се, на самата реализация на базата данни. Това, че използвате екологична библиотека, не означава, че вашата база данни ще се държи „зелено“. Това също трябва да се извика на нивото на самата база данни. Prosgresql например поддържа обработка на асинхронни команди от версия 2.2.

Също така може да искате да проверите Проекти, използващи gevent.

Gunicorn ще улесни живота ви, поне когато започнете да внедрявате приложението си. Също така по време на разработката бих препоръчал gunicorn (с gevent) вместо нормалната команда django runserver, просто защото може да обработва едновременни заявки много по-бързо.

person Torsten Engelbrecht    schedule 01.03.2012