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.1 answers
Oto jak uruchamiam Django z gevent + Monkey patching:
Zmodyfikowałem
manage.py
więc pierwsza linijka (po shebangu) jestfrom gevent import monkey; monkey.patch_all()
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.
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