Обзорное представление программы

Большая часть «действий», происходящих в PyMailCGI, сосредоточена в совместно используемых вспомогательных модулях (особенно в одном, под именем commonhtml.py). Как будет показано чуть ниже, сценарии CGI, реализующие взаимодействие с пользователем, сами по себе выполняют немного. Такая архитектура была выбрана намеренно, чтобы сделать сценарии максимально простыми, избежать избыточности программного кода и придать им одинаковый внешний вид. Но это означает, что приходится прыгать между файлами, чтобы понять, как работает система.

Чтобы проще было разобраться в этом примере, мы будем рассматривать его программный код по частям: сначала сценарии страниц, а затем — вспомогательные модули. Во-первых, мы изучим снимки экранов основных веб-страниц, создаваемых системой, а также файлы HTML и CGI- сценарии Python верхнего уровня, которые их генерируют. Мы начнем с того, что проследим, как выполняется отправка почты, а затем — как выполняется чтение и последующая обработка имеющейся почты. В этих разделах мы познакомимся с большинством деталей реализации, но для понимания того, что в действительности делают сценарии, будьте готовы смотреть вперед, в описание вспомогательных модулей.

Я должен также подчеркнуть, что это довольно сложная система, и я не стану описывать ее исчерпывающим образом. Как и при изучении Py- MailGUI в главе 14, читайте попутно исходный программный код, чтобы разобраться в деталях, о которых явно не сказано в тексте. Все исходные тексты входят в состав доступного для загрузки пакета с примерами к книге, и мы изучим здесь ключевые концепции этой системы. Как обычно в отношении конкретных примеров, приводимых в книге, предполагается, что читатель на данной стадии изучения в состоянии читать программный код на языке Python и за дополнительными деталями будет обращаться к программному коду примера. Синтаксис Python настолько близок к исполняемому псевдокоду, что иногда системы лучше описываются на Python, чем на обычном языке.

Опробование примеров из этой главы

Страницы HTML и CGI-сценарии, входящие в состав PyMailCGI, могут быть установлены на любой веб-сервер, доступный вам. Однако для простоты мы будем следовать той же политике, что и в главе 15, — мы будем использовать сценарий webserver.py локального веб-сервера, представленный в примере 15.1, выполняющийся на одном компьютере с веб-броузером. Как уже говорилось в предыдущей главе, это означает, что для доступа к страницам системы из броузера или с помощью модуля urllib.request мы будем использовать доменное имя сервера «local- host» (или эквивалентный ему IP-адрес «127.0.0.1).

Запустите этот сервер на своем компьютере, чтобы опробовать программу в действии. В конечном счете, эта система должна иметь возможность взаимодействовать с почтовым сервером через Интернет, чтобы получать или отправлять сообщения, но в данном случае веб-сервер будет выполняться локально, на вашем компьютере.

Одно небольшое замечание: программный код PyMailCGI находится в отдельном каталоге, на один уровень ниже каталога со сценарием web- ser ver.py. По этой причине при запуске веб-сервера необходимо явно указывать каталог приложения и номер порта в командной строке, как показано ниже:

C:\\PP4E\Internet\Web> webserver.py PyMailCgi 8000

Введите эту команду в окне консоли Windows или в командной оболочке на Unix-подобной платформе. При запуске таким способом веб-сервер будет принимать запросы на соединение на компьютере «localhost», на сокете с портом 8000. Он будет обслуживать страницы из подкаталога PyMailCgi, находящегося на один уровень ниже каталога со сценарием, и выполнять сценарии CGI, расположенные в каталоге PyMailCgi\ cgi-bin. Это возможно благодаря тому, что сценарий веб-сервера делает текущим рабочим каталогом тот, который был передан в командной строке при запуске.

Тонкое замечание: поскольку при запуске таким способом мы указываем в командной строке уникальный номер порта, веб-сервер не будет конфликтовать с другим его экземпляром, обслуживающим примеры из предыдущей главы, находящиеся в дереве каталогов на один уровень выше, — тот экземпляр веб-сервера будет принимать соединения на сокете с портом 80, а наш новый экземпляр будет обрабатывать запросы, поступающие на порт 8000. Фактически, имеется возможность взаимодействовать с любым сервером из одного и того же броузера, указывая тот или иной номер порта. Если вы запустите два экземпляра сервера, обслуживающих каталоги с примерами для различных глав, то для доступа к страницам и сценариям из предыдущей главы используйте адреса URL следующего вида:

http://localhost/languages.html

http://localhost/cgibin/languages.py?language=All

А для доступа к страницам и сценариям из этой главы используйте адреса URL такого вида:

http://localhost:8000/pymailcgi.html

http://localhost:8000/cgibin/onRootSendLink.py

В процессе работы с примерами вы увидите, как будут появляться трассировочные сообщения в окне того сервера, с которым вы взаимодействуете. Чтобы понять, почему происходит именно так, как происходит, смотрите введение в адреса сетевых сокетов в главе 12 и обсуждение адресов URL в главе 15.

Если вы решите установить программный код этого примера на другой сервер, просто замените часть «localhost: 8000/cgi-bin» в адресах URL, используемых здесь, именем своего сервера, номером порта и путем к каталогу. На практике такие системы, как PyMailCGI, более полезны, когда они устанавливаются на удаленном сервере, что позволяет обрабатывать почту с помощью любого веб-клиента.

Как и в примере приложения PyMailGUI, вам необходимо будет отредактировать настройки в модуле mailconfig.py, чтобы использовать эту систему для чтения своей почты. Информация о почтовом сервере, указанная в настройках в настоящий момент, не подойдет для чтения вашей почты — подробнее об этом чуть ниже.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий