Подтвердить что ты не робот

Веб-программирование на Python

Доброе утро.

Как видно из названия, у меня есть некоторые вопросы об использовании python для веб-разработки.

  • Какая наилучшая настройка для среды разработки, а именно, какой веб-сервер использовать, как связать с ним python. Желательно, чтобы он был реализован как в среде, так и в winx.

Мое главное беспокойство, когда я последний раз пробовал apache + mod_python + CherryPy приходилось перезагружать веб-сервер, чтобы увидеть изменения. Это считается нормальным? По какой-то причине загрузка вихревой автозагрузки не работала вообще.

  • Какая самая лучшая настройка для развертывания рабочего приложения Python для производства и почему? Я теперь использую lighttpd для своих веб-приложений PHP, но как это сделать для python по сравнению с nginx, например?

  • Стоит ли нырять прямо с каркасом или катать что-то простое из моих собственных? Я вижу, что у Django довольно много поклонников, но я думаю, что это будет излишним для моих нужд, поэтому я начал изучать CherryPy.

  • Как работают приложения Python, если мне нужно перезагрузить httpd, чтобы увидеть изменения? Что-то вроде постоянного процесса, порождающего дочерние процессы, причем весь основной файл включает в себя запуск на сервере, а затем просто ленивую загрузку необходимых ресурсов?

  • Python поддерживает многопоточность, нужно ли мне прибегать к использованию этого при разработке веб-приложений? Какая была бы польза и в каких ситуациях?

Большое спасибо!

4b9b3361

Ответ 1

Итак, вот мои мысли об этом:

Я использую Python Paste для разработки моего приложения и, в конечном итоге, его запуска (или любого другого веб-сервера python). Обычно я не использую mod_python или mod_wsgi, поскольку это делает установку более сложной.

Я использую zc.buildout для управления моей средой разработки и всеми зависимостями вместе с virtualenv. Это дает мне изолированную песочницу, которая не мешает установке каких-либо модулей Python в системе.

Для развертывания я также использую buildout/virtualenv, в конечном итоге с другим buildout.cfg. Я также использую Paste Deploy и механизм настройки, где у меня есть разные конфигурационные файлы для разработки и развертывания.

Поскольку я обычно запускаю пасту/черри и т.д. автономно, я использую Apache, NGINX или, возможно, только один лак перед ним. Это зависит от того, какие параметры конфигурации вам нужны. Например. если нет виртуального хостинга, переписать правила и т.д., то мне не нужен полноценный веб-сервер впереди. При использовании веб-сервера я обычно использую ProxyPass или более сложную переписывание с помощью mod_rewrite.

Веб-фреймворк Python, который я использую в данный момент, repoze.bfg прямо сейчас.

Что касается ваших вопросов о перезагрузке, я знаю об этих проблемах при запуске с помощью, например, mod_python, но при использовании автономного "paster serve... -reload" и т.д. он пока работает очень хорошо. repoze.bfg дополнительно имеет некоторые настройки для автоматической перезагрузки шаблонов при их изменении. Если структура, которую вы используете, должна быть документирована.

Что касается многопоточности, которая обычно используется, то внутри веб-сервера python. Поскольку CherryPy поддерживает это, я думаю, вам не нужно беспокоиться об этом, его следует использовать автоматически. Вы должны в конце концов сделать некоторые тесты, чтобы узнать, какое количество потоков ваше приложение работает лучше всего.

Надеюсь, что это поможет.

Ответ 2

Какая наилучшая настройка для среды разработки?

Не имеет большого значения. Мы используем Django, который отлично работает в Windows и Unix. Для производства мы используем Apache в Red Hat.

Требуется перезагрузить веб-сервер, чтобы увидеть нормальные изменения?

Да. Непонятно, почему вам нужно что-то другое. Программное обеспечение веб-приложений не должно быть динамическим. Содержание да. Номер программного обеспечения

В Django мы разрабатываем без использования веб-сервера любого типа на нашем рабочем столе. Команда "runerver" Django перезагружает приложение в большинстве случаев. Для развития это отлично работает. Время, когда он не перезагружается, когда мы так сильно повредили, что приложение не работает должным образом.

Какая самая лучшая настройка для развертывания рабочего приложения Python для производства и почему?

В этом контексте undefined. Поэтому, пожалуйста, предоставьте некоторую квалификацию для "гнезда" (например, "самый быстрый", "самый дешевый", "самый голубой" )

Стоит ли нырять прямо с каркасом или катать что-то простое из моих собственных?

Не тратьте время на свое собственное. Мы используем Django из-за встроенной страницы администрирования, которую нам не нужно писать или поддерживать. Экономит горы работы.

Как работают приложения Python, если мне нужно перезагрузить httpd, чтобы увидеть изменения?

Два метода:

  • Daemon - mod_wsgi или mod_fastcgi имеют процесс демонов Python, к которому они подключаются. Измените свое программное обеспечение. Перезапустите демона.

  • Встраиваемые - mod_wsgi или mod_python имеют встроенный режим, в котором интерпретатор Python находится внутри модника внутри Apache. Вы должны перезапустить httpd, чтобы перезапустить встроенный интерпретатор.

Нужно ли использовать многопоточность?

Да и нет. Да, вы должны знать об этом. Нет, вам не нужно много делать. Apache и mod_wsgi и Django должны обрабатывать это для вас.

Ответ 3

+1 к MrTopf ответ, но я добавлю несколько дополнительных мнений.

Вебсервер

Apache - это веб-сервер, который предоставит вам самую удобную конфигурацию. Избегайте mod_python, потому что он в основном не поддерживается. С другой стороны, mod_wsgi очень хорошо поддерживается и дает вам лучшую стабильность (другими словами, проще настроить для использования процессора/памяти стабильный, а не спикей и непредсказуемый).

Еще одно огромное преимущество, вы можете настроить mod_wsgi для перезагрузки приложения, если приложение wsgi script коснулось, нет необходимости перезапускать Apache. Для серверов разработки/тестирования вы можете даже настроить mod_wsgi для перезагрузки при изменении любого файла в вашем приложении. Это так полезно. Я даже запускаю Apache + mod_wsgi на своем ноутбуке во время разработки.

Nginx и lighttpd обычно используются для веб-серверов, либо путем обслуживания приложений Python напрямую через интерфейс fastCGI (не беспокойтесь ни о каких интерфейсах WSGI на этих серверах), либо используя их в качестве переднего конца перед Apache. Звонки в приложение проходят через (через прокси) в Apache + mod_wsgi, а затем nginx/lighttpd напрямую обслуживают статический контент.

Nginx обладает дополнительным преимуществом: он может обслуживать контент непосредственно из memcached, если вы хотите получить этот сложный. Я слышал пренебрежительные комментарии к lighttpd, и у него, похоже, есть некоторые проблемы с разработкой, но, безусловно, некоторые крупные компании используют его успешно.

Стек Python

На самом низком уровне вы можете напрямую запрограммировать WSGI для достижения максимальной производительности. Есть много полезных модулей WSGI, которые помогут вам в тех областях, которые вы не хотите развивать самостоятельно. На этом уровне вы, вероятно, захотите выбрать сторонние компоненты WSGI, чтобы выполнять такие функции, как разрешение URL-адресов и обработка HTTP-запросов/ответов. Отличный компонент запроса/ответа WebOb.

Если вы посмотрите Pylons, вы можете увидеть их идею "лучших в своем классе" компонентов WSGI и структуру, которая делает проще, чем Django выбирать свои собственные компоненты, такие как механизм шаблонов.

Django может быть излишним, но я не думаю, что это действительно хороший аргумент. Django облегчает работу. Когда вы начинаете попадать в очень сложные приложения, вам действительно нужно взглянуть на переход к платформам нижнего уровня.

Ответ 4

Посмотрите на Google App Engine. На своем веб-сайте:

Google App Engine позволяет запускать веб-приложений в Google инфраструктуры. Двигатель приложений приложения легко создавать, легко поддерживать и легко масштабировать трафика и хранения данных. С App Engine нет серверов для поддержания: вы просто загружаете свои приложения, и он готов служить ваших пользователей.

Вы можете обслуживать свое приложение, используя бесплатный доменное имя домена appspot.com, или использовать Google Apps для обслуживания ваш собственный домен. Вы можете поделиться своим приложение с миром или ограничение доступ к членам вашего организация.

App Engine ничего не стоит начал. Создать бесплатный аккаунт, и вы можете разрабатывать и публиковать свои приложение для мира, чтобы увидеть, на бесплатно и без каких-либо обязательств. бесплатная учетная запись может использовать до 500 МБ постоянное хранение и достаточный объем процессора и пропускная способность около 5 миллионов страниц просмотров в месяц.

Лучшая часть всего: включает поддержку Python, включая Django. Перейдите к http://code.google.com/appengine/docs/whatisgoogleappengine.html

Ответ 5

Когда вы используете mod_python на поточном сервере Apache (по умолчанию в Windows), CherryPy работает в том же процессе, что и Apache. В этом случае вы почти наверняка не хотите, чтобы CP перезапустил процесс.

Решение: используйте mod_rewrite или mod_proxy, чтобы CherryPy запускался в своем собственном процессе. Затем вы можете автоматически загружать содержимое вашего сердца.:)