как объединить основы 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:
я модифицировал
manage.py
Итак, первая строка (после shebang) -from gevent import monkey; monkey.patch_all()
я добавил новый
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
для вашего сервера. Но меня это вполне устраивает.