Или, другими словами, если я хочу использовать 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 для подачи музыки из песочницы, которую я написал, чтобы люди не могли получить доступ к произвольным файлам.Потоки были кошмаром.(Я вспоминаю ошибку, когда вам нужно было передать специальные аргументы Popen, так как многопоточность вызывала неявный ответвление, которое приводило к зависанию висячих файловых дескрипторов.) Были и другие проблемы.Код нужно было много реорганизовать.Это может быть очень полезно для личного проекта, но является значительным мероприятием и не стоит его для бизнеса, которому нужен только веб-сайт.
Я знаю двух стартапов, которые были довольны использованием Pylons (используя Paste) или Turbogears.(используя CherryPy) в прошлом, если вы ищете облегченный стек веб-сервера Python.Хотя их шаблонные системы по умолчанию отсутствуют.Выбор между Apache и более экономичным веб-сервером на основе Python также может зависеть от навыков ваших соавторов.