Python
Категория:Виртуальный хостинг -> Сервисы и средства разработки
Содержание
- Что такое Python?
- Как организована поддержка Python на хостинге?
- Часто задаваемые вопросы
- Обратите внимание:
Что такое Python?
Python — высокоуровневый язык программирования общего назначения с акцентом на производительность разработчика и читаемость кода.
Синтаксис ядра Python минималистичен. Автор языка Python Гвидо ван Россум.
Основные архитектурные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Код в Питоне организовывается в функции и классы, которые могут объединяться в модули (которые в свою очередь могут быть объединены в пакеты).
Эталонной реализацией Python является интерпретатор CPython, поддерживающий большинство активно используемых платформ. Он распространяется свободно под очень либеральной лицензией, позволяющей использовать его без ограничений в любых приложениях, включая проприетарные.
Какие инструменты нужны для работы с Python?
- Любой текстовый редактор, позволяющий сохранять файлы в ASCII-коде. Примером такого редактора является обычный Блокнот, имеющийся в каждой Windows.
- Программа конвертации ASCII-файлов в формат Unix-систем. В частности, таким конвертером может служить FAR Manager.
- FTP-клиент для загрузки файлов на сервер. Лучше всего для этого подходит FAR Manager, позволяющий, кроме всего прочего, устанавливать права доступа к файлам.
Путь к интерпретатору python:
/usr/local/bin/python
Как организована поддержка Python на хостинге?
Что такое WSGI?
WSGI (англ. Web Server Gateway Interface, произносится виски) — стандарт взаимодействия между Python-программой, выполняющейся на стороне сервера и самим веб-сервером, например, Apache. WSGI предоставляет простой и универсальный интерфейс между большинством веб-серверов и веб-приложениями или фреймворками.
По стандарту, WSGI-приложение должно удовлетворять следующим требованиям:
- Должно быть вызываемым (callable) объектом
- Принимать два параметра:
- словарь переменных окружения (environ)
- обработчик запроса (start_response)
- Вызывать обработчик запроса с кодом HTTP-ответа и HTTP-заголовками
- Возвращать итерируемый объект с телом ответа
Стандарт интерфейса (на английском) http://www.python.org/dev/peps/pep-0333/
Что такое mod_wsgi?
Для поддержки работы Python приложений мы используем mod_wsgi. mod_wsgi – модуль для веб-сервера Apache, который предоставляет WSGI-совместимый интерфейс для работы с web-приложениями, написанными на языке программирования Python.
Простейшее wsgi-приложение
Простейшим примером WSGI-приложения может служить такая функция:
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return 'WSGI working on peterhost.ru'
Расширение файлов:
Файлы запуска WSGI – приложений должны иметь расширение .wsgi.
Иерархия директорий сайта
- www/site1/public_html – Для статических файлов и файлов запуска wsgi-приложений.
- www/site1/cgi-bin – Для файлов python-приложений.
Мы настоятельно рекомендуем размещать Python – приложения в каталоге cgi-bin, поскольку этот каталог находится вне DocumentRoot сервера и по умолчанию не доступен через Web. В каталоге public_html вы можете размещать статические файлы, а также файлы запуска WSGI – приложений (необходимо расширение wsgi), например trac.wsgi.
С какими привилегиями работает WSGI – приложение?
Все WSGI – приложения одного сайта выполняются внутри отдельного процесса. Процесс работает с привилегиями владельца сайта.
Технические ограничения на работу WSGI – приложений.
Все WSGI – приложения одного сайта выполняются внутри отдельного процесса (3 процессов на тарифных планах группы Оссобенный хостинг). Число потоков выполнения 15, таким образом одновременно может обрабатываться до 15 запросов к WSGI – приложениям на 1 сайте (до 32 на тарифных планах группы Оссобенный хостинг).
Многопоточность в python реализована с помощью глобальной блокировки GIL, это означает, что в один момент времени только один поток может использовать CPU (все остальные будут заблокированы), однако на практике приложения выполняют много блокирующих запросов ввода вывода и таким образом освобождают CPU для других потоков выполнения.
Как я могу увидеть мои WSGI – приложения?
Вы можете подключиться по SSH и выполнить команду ps auxwww, результат будет примерно следующим
[phusermv@mega16 ~]$ ps auxwww USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND phusermv 69393 0.0 1.3 66048 25980 ?? I 12:00AM 0:00.62 httpd: wsgi.phusermv.site9 (httpd) phusermv 69394 0.0 1.3 66048 25980 ?? I 12:00AM 0:00.62 httpd: wsgi.phusermv.site4 (httpd)
В данном случае поддержка Python включена для 2 сайтов.
Выбрать необходимую для работы платформу для сайта вы можете в вашей панели управления.
Часто задаваемые вопросы
У меня есть 3 сайта на python, но ps auxwww не показывает процессы!
Для эффективного использования оперативной памяти WSGI – приложения, не выполняющие запросы, автоматически завершаются через некоторое время. При получении запроса WSGI – приложение автоматически запускается.
Ничего не работает, я получаю ошибку 500!
Скорее всего проблема в коде Вашего приложения. Для диагностики необходимо проверить лог-файл /home/Ваш логин/logs/error_log.
Первый запрос к моему сайту выполняется долго.
При первом запросе к WSGI – приложению происходит импортирование (поиск, чтение, компиляция в byte-код) всех необходимых для работы приложения модулей. Эта операция для большого приложения может занимать несколько секунд.
Я изменил код приложения, однако не вижу изменений в работе сайта, что делать?
Для достижения высокой скорости работы WSGI – приложения импортируют все модули только 1 раз (при первом запросе). Для перезагрузки WSGI – приложения нужно выполнить команду touch (изменить время модификации) на файл запуска WSGI-приложения.
Какое количество сайтов на Python я могу создать?
В настоящее время количество сайтов с Python – приложениями отдельно не лимитируется. Однако общее число сайтов ограничивается параметрами вашего тарифного плана.
Обратите внимание:
Работа с python требует довольно большое количество ресурсов, поэтому , если ваш проект отличается высокой посещаемостью, мы советуем вам для работы с python тарифы Гигант и Титан, во избежание создания критической нагрузки на сервер.
