jak połączyć podstawy django plus gevent?

Po długich poszukiwaniach i googlowaniu wracam do studni. Mam Django 1.4 i szukam przyzwoitego działającego przykładu, aby dowiedzieć się, jak Django działa z geventem. Lubię framwork Django, ale potrzebuję go, aby poradzić sobie z długimi sondażami. Mam już działający serwer korzystający z gevent, który obsługuje długie zapytania ankietowe, a także strumieniuje obrazy przez http z prędkością około 10 klatek na sekundę. Chciałbym użyć wszystkich dobroci w Django, aby zapewnić framework do tego część.

Istnieje wiele przykładów, ale niestety żaden z nich nie wydaje się działać po wyjęciu z pudełka! Bardzo pomocne byłoby posiadanie przykładu, aby zrozumieć, w jaki sposób te dwie rzeczy współpracują ze sobą.

Oto co znalazłem do tej pory i problemy:

Http://codysoyland.com/2011/feb/6/evented-django-part-one-socketio-and-gevent / problem: ImportError: nie można zaimportować webchat ustawień.settings " (jest na sys./ align = "left" / ): Brak nazwy modułu webchat.ustawienia

Https://github.com/codysoyland/django-socketio-example/blob/master/README.rst Problem: instalacja nie powiodła się z uprawnieniami problem z uzyskaniem gevent Próbowałem ręcznie pobrać go z git hub. Przykład jest uruchamiany, ale generuje te błędy podczas łączenia się przeglądarek.

Mają charakter informacyjny, ale nie dostarczają podstawowej odpowiedzi. Potrzebuję pomocy w zrozumieniu komety w Pythonie (z Django) https://bitbucket.org/denis/gevent/src/tip/examples/webchat/chat/views.py http://blog.gevent.org/2009/10/10/simpler-long-polling-with-django-and-gevent/

Co mam nadzieję, że ktoś wyjaśni (proszę, ładnie proszę....) czy to: Mam podstawową stronę stworzoną przy użyciu Django 1.4-tutorial tutaj https://docs.djangoproject.com/en/1.4/intro/tutorial01 / jest doskonała. Więc teraz muszę zrozumieć, jakie zmiany wprowadzić, aby korzystać z gevent i być potrafi obsługiwać zdarzenia asynchroniczne. Jestem pewien, że nie jest to trudne - po prostu potrzebuję kogoś, kto to rozumie, aby wyjaśnić, co robić, a także co się dzieje (z rzeczami takimi jak monkey_patch).

Dzięki.
Author: Community, 2012-06-10

1 answers

Oto jak uruchamiam Django z gevent + Monkey patching:

  1. Zmodyfikowałem manage.py więc pierwsza linijka (po shebangu) jest from gevent import monkey; monkey.patch_all()

  2. Dodałem nowy skrypt run_production_server (patrz niżej).

W końcu skonfigurowałem mój front-end webserver na Proxy żądania do portu 1234 (port, na którym run_production_server nasłuchuje).

from gevent import monkey; monkey.patch_all()
from gevent.wsgi import WSGIServer

from django.core.management import setup_environ    
import settings
setup_environ(settings)

from django.core.handlers.wsgi import WSGIHandler as DjangoWSGIApp
application = DjangoWSGIApp()
server = WSGIServer(("127.0.0.1", 1234), application)
print "Starting server on http://127.0.0.1:1234"
server.serve_forever()

Niektórzy mogą narzekać, że ten serwer nie jest wystarczająco "web scale". Wątpię, by byli w stanie dostarczyć benchmarki do udowodnij to, ale jeśli martwisz się, możesz również użyć gunicorn lub uwsgi na swoim serwerze. Ale to mi pasuje.

 21
Author: David Wolever,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-13 04:38:31