lt;Directory "/var/www/html/mywebdir> AddHandler python-program .py PythonHandler mprocess 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

lt;Directory "/var/www/html/mywebdir> AddHandler python-program .py PythonHandler mprocess

Поиск

<Directory "/var/www/html/mywebdir> AddHandler python-program .py PythonHandler mprocess

 

</Directory>

 

После этого необходимо перезапуститьweb-сервер и,если все прошло без ошибок,можно приступать к написанию обработчика mprocess.py.Этот сценарий будет реагировать на любой запрос видаhttp://localhost/*.py.

 

Следующий сценарий mprocess.py выведет в браузере страницу со словами Hello, world!:

 

from mod_python import apache

 

def handler(req): req.content_type = "text/html" req.send_http_header()

 

req.write("""<HTML><HEAD><TITLE>Hello, world!</TITLE></HEAD> <BODY>Hello, world!</BODY></HTML>""")

 

return apache.OK

 

Отличия сценария-обработчика отCGI-сценария:

 

1. Сценарий-обработчик не запускается при каждомHTTP-запросе:он уже находится в памяти,и из него вызываются необходимые функции-обработчики(в приведенном примере такая функция всего одна-handler()).Каждый процесс-потомокweb-сервера может иметь свою копию сценария и интерпретатораPython.

2. Как следствие п.1различныеHTTP-запросы делят одни и те же глобальные переменные.Например,таким образом можно инициализировать соединение с базой данных и применять его во всех запросах(хотя в некоторых случаях потребуются блокировки,исключающие одновременное использование соединения разными потоками(нитями)управления).

 

3. Обработчик задействуется при обращении к любому"файлу"с расширением py,тогда какCGI-сценарий обычно запускается при обращении по конкретному имени.

 

4. В сценарии-обработчике нельзя рассчитывать на то,что он увидит модули,расположенные в том же каталоге.Возможно,придется добавить некоторые каталоги в sys.path.

 

5. Текущий рабочий каталог(его можно узнать с помощью функции os.getcwd())также не находится в одном каталоге с обработчиком.

 

6. #!-строка в первой строке сценария не определяет версию интерпретатора Python. Работает версия,для которой был скомпилирован mod_python.

 

7. Все необходимые параметры передаются в обработчик в видеRequest-объекта.Возвращаемые значения также передаются через этот объект.


 


8. Web-сервер замечает, что сценарий-обработчик изменился, но не заметит изменений в импортируемых в него модулях.Команда touch mprocess.py обновит дату изменения файла сценария.

 

9. Отображение os.environ в обработчике может быть обрезанным.Кроме того,вызываемые из сценария-обработчика другие программы его не наследуют,как это происходит при работе сCGI-сценариями.Переменные можно получить другим путем:req.add_common_vars(); params = req.subprocess_env.

 

10. Так как сценарий-обработчик не является"одноразовым",какCGI-сценарий,из-за ошибок программирования(как самого сценария,так и других компонентов)могут возникать утечки памяти(программа не освобождает ставшую ненужной память).

Следует установить значение параметра MaxRequestsPerChild(максимальное число запросов,обрабатываемое одним процессом-потомком)больше нуля.

 

Другой возможный обработчик-сценарий идентификации:

 

def authenhandler(req):

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 77; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.007 с.)