Можете ли вы порекомендовать минималистичный веб-сервер Python, который я могу встроить в свое настольное приложение.
Встроенный веб-сервер в Python?
Ответы (7)
Насколько минималистично и с какой целью?
SimpleHTTPServer предоставляется бесплатно как часть стандартных библиотек Python.
Если вам нужны дополнительные функции, загляните в CherryPy или (вверху) Twisted.
Я становлюсь большим поклонником недавно выпущенной библиотеки схемы. Это платформа компонентов/событий, которая поставляется с очень хорошим набором пакетов для создания веб-серверов и приложений. Вот простой веб-пример с сайта:
from circuits.lib.web import Server, Controller
class HelloWorld(Controller):
def index(self):
return "Hello World!"
server = Server(8000)
server += HelloWorld()
server.run()
Его поддержка WSGI также не сложнее этого. Хорошая вещь.
Если вы делаете много параллельных вещей, вы можете рассмотреть Kamaelia HTTPServer.
Я нашел web.py довольно простым в использовании: http://webpy.org/
Если вы хотите использовать что-то из стандартной библиотеки, я настоятельно рекомендую не использовать SimpleHTTPServer, а вместо этого использовать wsgiref.simple_server
. SimpleHTTPServer — это неуклюжий и довольно бессмысленный способ реализации веб-приложения, и хотя необработанный WSGI не очень прост (но, безусловно, возможен), у вас есть возможность использовать любую платформу на основе WSGI поверх него. Кроме того, если вы используете wsgiref, у вас будет возможность позже перейти на сервер, такой как CherryPy (обратите внимание, что сервер в CherryPy можно использовать отдельно от остальной части фреймворка, и вам нужно только один файл только для сервера). Для «настоящего» веб-приложения CherryPy имеет несколько преимуществ по сравнению с wsgiref, но для локального приложения вряд ли какое-либо из них будет иметь значение.
Если вы создаете настольное приложение, вам нужно будет запустить отдельный поток для wsgiref или CherryPy. Если это нормально, то сервер на основе WSGI, вероятно, будет проще всего. Если вы не хотите запускать отдельный поток для сервера, то вам, скорее всего, нужно использовать Twisted.