как объединить основы django plus gevent?

после долгих поисков и поиска в гугле я возвращаюсь к колодцу. У меня есть Django 1.4 и я ищу достойный работающего пример, чтобы выяснить, как заставить Django работать с gevent. Мне нравится фреймворк Django, но мне нужно, чтобы он обрабатывал длинный опрос. У меня уже есть рабочий сервер, использующий gevent самостоятельно, который обрабатывает длинные запросы опроса, а также потоковое изображение через http со скоростью около 10 кадров в секунду. Я хотел бы использовать все лакомства в Django, чтобы обеспечить основу для этой части.

есть много примеров, но, к сожалению, ни один из них, похоже, не работает из коробки! Было бы действительно полезно иметь рабочий пример, чтобы понять, как эти две вещи работают вместе.

вот что я нашел до сих пор и проблемы:

http://codysoyland.com/2011/feb/6/evented-django-part-one-socketio-and-gevent/ проблема: ImportError: не удается импортировать настройки пользователей.настроек (это на системный.путь?): Нет модуля с именем webchat.настройки

https://github.com/codysoyland/django-socketio-example/blob/master/README.rst Проблема: сбой установки с разрешением проблема получения gevent Пробовал вручную получить его из Git hub. Пример выполняется, но генерирует эти ошибки при подключении браузеров.

они информативны, но не дают основного ответа. нужна помощь в понимании кометы в Python (с Джанго) 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/

что, я надеюсь, кто-то может объяснить (пожалуйста, довольно пожалуйста....) заключаться в следующем: У меня есть базовый сайт, созданный с помощью Django 1.4-учебник здесь https://docs.djangoproject.com/en/1.4/intro/tutorial01/ превосходно. Так что теперь мне нужно понять, что нужно изменить. чтобы использовать gevent и иметь возможность обрабатывать асинхронные события. Я уверен, что это не сложно - мне просто нужен кто-то, кто понимает это, чтобы объяснить, что делать, а также что происходит (с такими вещами, как monkey_patch).

спасибо.

1 ответов


вот как я запускаю Django с gevent + monkey patching:

  1. я модифицировал manage.py Итак, первая строка (после shebang) -from gevent import monkey; monkey.patch_all()

  2. я добавил новый run_production_server скрипт (см. ниже).

наконец, я настроил свой интерфейсный веб-сервер на прокси-запросы к порту 1234 (порт, который run_production_server прослушивает).

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()

некоторые могут жаловаться, что этот сервер не " веб-масштаб" достаточно. Я сомневаюсь, что они смогут предоставить критерии, чтобы доказать это, но если вы беспокоитесь, вы также можете использовать gunicorn или uwsgi для вашего сервера. Но меня это вполне устраивает.