2012-06-09 2 views
17

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

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

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

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

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

Они носят информативный характер, но не дают основного ответа. Need help understanding Comet in Python (with 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/

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

Спасибо.

ответ

20

Вот как я бегу Django с GEvent + обезьяна латание:

  1. Я модифицированном manage.py так первую строку (после притон) является 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 для своего сервера. Но для меня это прекрасно.

+0

Благодарим вас за сценарий, это большая помощь. Но я пробовал это, и я думаю, что чего-то не хватает. Я начинаю с проекта django 1.4 по умолчанию.Я запускаю сервер с% python manage.py runningerver 0.0.0.0:8000. Как использовать сценарий, который вы предоставили? –

+0

Какую часть использования вы не знаете? –

+0

Извините, что задаю тупые вопросы .... как мне заставить этот скрипт работать, когда я начинаю работу с помощью manage.py? Я смотрю на django wsgi docs прямо сейчас, и он упоминает wsgi.py - это, где должен идти ваш скрипт? –

Смежные вопросы