Встроенный веб-сервер в Python?

Можете ли вы порекомендовать минималистичный веб-сервер Python, который я могу встроить в свое настольное приложение.


person Ankur Gupta    schedule 19.11.2008    source источник


Ответы (7)


Насколько минималистично и с какой целью?

SimpleHTTPServer предоставляется бесплатно как часть стандартных библиотек Python.

Если вам нужны дополнительные функции, загляните в CherryPy или (вверху) Twisted.

person Tim Lesher    schedule 19.11.2008
comment
Я настоятельно рекомендую CherryPy; Я использую его профессионально в течение многих лет и очень доволен им. - person Eli Courtwright; 19.11.2008
comment
Настоятельно предпочтите Twisted (или Kamaelia) другим. Он знает, как интегрироваться с основными циклами пользовательского интерфейса, используемыми в настольных приложениях. - person Ali Afshar; 20.11.2008
comment
Не будет ли Twisted излишним для такого решения? - person Phillip B Oldham; 20.11.2008
comment
Оригинальный постер ничего не говорил о назначении веб-сервера. Если нужно предоставить страницу, которую пользователь читает за один раз и не слишком часто, то Twisted — это излишество. Как способ предоставить интенсивно используемый интерфейс данных, это может быть не так. Поэтому я предложил ряд решений. - person Tim Lesher; 20.11.2008
comment
Настоятельно рекомендуем CherryPy 3 другим. Он вообще ничего не запускает в основном цикле и специально разработан для встраивания таким образом. - person fumanchu; 20.11.2008

Я становлюсь большим поклонником недавно выпущенной библиотеки схемы. Это платформа компонентов/событий, которая поставляется с очень хорошим набором пакетов для создания веб-серверов и приложений. Вот простой веб-пример с сайта:

from circuits.lib.web import Server, Controller

class HelloWorld(Controller):
   def index(self):
      return "Hello World!"

server = Server(8000)
server += HelloWorld()
server.run()

Его поддержка WSGI также не сложнее этого. Хорошая вещь.

person Matthew Trevor    schedule 20.11.2008

Если вы делаете много параллельных вещей, вы можете рассмотреть Kamaelia HTTPServer.

person Jason Baker    schedule 19.11.2008
comment
Kamaelia отлично подходит для параллельной работы, но не будет ли это довольно большой библиотекой, которую можно включить только для минимального веб-сервера? - person Phillip B Oldham; 20.11.2008
comment
Есть много вещей, которые можно было бы вырезать из него, если бы кто-то был так склонен. Была идея сделать несколько дистрибутивов Kamaelia, но пока этого не произошло. (Но да, я согласен, что это может быть значительная библиотека, которую можно включить как есть). - person Jason Baker; 20.11.2008

Я нашел web.py довольно простым в использовании: http://webpy.org/

person interstar    schedule 20.11.2008

Если вы хотите использовать что-то из стандартной библиотеки, я настоятельно рекомендую не использовать SimpleHTTPServer, а вместо этого использовать wsgiref.simple_server. SimpleHTTPServer — это неуклюжий и довольно бессмысленный способ реализации веб-приложения, и хотя необработанный WSGI не очень прост (но, безусловно, возможен), у вас есть возможность использовать любую платформу на основе WSGI поверх него. Кроме того, если вы используете wsgiref, у вас будет возможность позже перейти на сервер, такой как CherryPy (обратите внимание, что сервер в CherryPy можно использовать отдельно от остальной части фреймворка, и вам нужно только один файл только для сервера). Для «настоящего» веб-приложения CherryPy имеет несколько преимуществ по сравнению с wsgiref, но для локального приложения вряд ли какое-либо из них будет иметь значение.

Если вы создаете настольное приложение, вам нужно будет запустить отдельный поток для wsgiref или CherryPy. Если это нормально, то сервер на основе WSGI, вероятно, будет проще всего. Если вы не хотите запускать отдельный поток для сервера, то вам, скорее всего, нужно использовать Twisted.

person ianb    schedule 20.11.2008

См. реализацию WSGI.

person S.Lott    schedule 19.11.2008