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 тарифы Premium-хостинга во избежание создания критической нагрузки на сервер.


Категории:

загрузка…