Вопрос по gevent, django, python, comet – как совместить Джанго плюс Гевент с основами?

18

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

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

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

http://codysoyland.com/2011/feb/6/evented-django-part-one-socketio-and-gevent/ проблема: Ошибка импорта: не удалось импортировать настройки & quot; webchat.settings & apos; (Это на sys.path?): Нет модуля с именем webchat.settings

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   ответ
21

I've modified manage.py so the first line (after the shebang) is from gevent import monkey; monkey.patch_all()

I've added a new run_production_server script (see below).

Наконец, я настроил свой интерфейсный веб-сервер на запросы прокси для порта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 для вашего сервера. Но это прекрасно работает для меня.

Извините, что задаю глупые вопросы .... как мне запустить этот скрипт, когда я запускаю вещи с помощью manage.py? Я сейчас смотрю на документы django wsgi и там упоминается wsgi.py - куда должен идти ваш скрипт? Tereus Scott
Спасибо за сценарий, это большая помощь. Но я попробовал это, и я думаю, что что-то упустил. Я начинаю с проекта по умолчанию django 1.4. Я запускаю сервер с% python manage.py runserver 0.0.0.0:8000. Как мне использовать предоставленный вами скрипт? Tereus Scott
Я не заменил wsgi.py содержимым этого скрипта и получаю его сейчас: AttributeError: & apos; Settings & apos; у объекта нет атрибута & apos;file& APOS; Tereus Scott
В какой части его использования вы не уверены?
Когда я запускаю приведенный выше скрипт, я получаю это повышение ImportError (& quot; Настройки не могут быть импортированы, поскольку переменная среды% s не определена. & Quot;% ENVIRONMENT_VARIABLE) Итак, я добавил это: из настроек импорта django.conf Теперь я получаю это: ImportError: Невозможно импортировать настройки, поскольку переменная окружения DJANGO_SETTINGS_MODULE не определена. Tereus Scott

Похожие вопросы