Ответ 1
Или, другими словами, если я хочу использовать python для реализации сервера, который может быть использован в бизнесе, что мне также делать?
Уже существуют веб-серверы на основе python, такие как CherryPy (который, как я думаю, предназначен для решения веб-сервера на том же уровне стека, что и Apache, однако он больше основан на python, и Apache был вокруг много больше).
Если вы хотите написать легкий чрезвычайно простой веб-сервер с нуля, возможно, нет ничего плохого в использовании BaseHTTPServer, кроме, возможно, нескольких выдающихся проблем дизайна (я слышу, что условия гонки могут постоянно засорять сокет до тех пор, пока нить не умрет).
Хотя я бы не рекомендовал его (в одиночку) для бизнеса, некоторые из крупных мальчиков используют BaseHTTPServer с небольшим количеством дополнительного оборудования: http://www.cherrypy.org/browser/trunk/cherrypy/_cphttpserver.py?rev=583
Чтобы разработать, Apache является отраслевым стандартом. У него множество опций конфигурации, команда безопасности, списки рассылки для уязвимостей, которые я думаю, и т.д. Он поддерживает модули (например, mod_python). Веб-серверы на базе Python также поддерживают модули на основе python (возможно, они могут позволить вам получить доступ к вещам, отличным от python) через нечто, называемое стек WSGI; приложение WSGI может запускаться на любом веб-сервере на основе python (и Apache тоже, который также имеет modwsgi); Я думаю, что они более узкие по охвату, чем модули Apache.
Примеры модуля Apache: http://httpd.apache.org/docs/2.0/mod/
Примеры WSGI (не действительное сравнение): http://wsgi.org/wsgi/Middleware_and_Utilities
Я могу закодировать свой собственный веб-сервер, если я делаю что-то очень легкое, или если мне нужен огромный контроль над внутренними веб-серверами, которые интерфейсы модуля не могли обеспечить, или если я делал личный проект. Я бы не закодировал свой собственный сервер для бизнеса, если бы у меня не было значительного опыта работы с веб-серверами реального мира. Это особенно важно с точки зрения уязвимости безопасности.
Например, однажды я написал веб-музыкальный плеер. Я использовал BaseHTTPServer для прослушивания музыки из песочницы, которую я написал, чтобы люди не могли получить доступ к произвольным файлам. Threading был кошмаром. (Я помню ошибку, в которой вам нужно было передать специальные аргументы Popen, поскольку потоки вызвали неявную вилку, которая вызывала бы зависания на оборванных дескрипторах файлов.) Были и другие различные проблемы. Код должен быть реорганизован много. Это может быть очень полезно для личного проекта, но является значительным начинанием и не стоит для бизнеса, которому просто нужен веб-сайт.
Я знаю двух стартапов, которые в прошлом использовали контент Pylons (используя Paste) или Turbogears (используя CherryPy), если вы ищете легкий стежок веб-сервера python. Однако их системы шаблонов по умолчанию отсутствуют. Выбор между Apache и более компактным веб-сервером на основе python также может зависеть от набора навыков ваших со-разработчиков.