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

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
12
0
14 255
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

См. Реализацию Ссылка WSGI.

Ответ принят как подходящий

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

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

Если вам нужно больше возможностей, посмотрите CherryPy или (наверху) Скрученный.

Я настоятельно рекомендую CherryPy; Я профессионально пользуюсь им в течение многих лет и очень им доволен.

Eli Courtwright 19.11.2008 21:20

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

Ali Afshar 20.11.2008 04:09

Разве Twisted не переборщил с таким решением?

Phillip B Oldham 20.11.2008 16:47

В оригинальном плакате ничего не говорилось о назначении веб-сервера. Если нужно предоставить страницу, которую пользователь читает за раз и не слишком часто, то Twisted излишний. Как способ обеспечить часто используемый интерфейс данных, это может быть не так. Поэтому я предложил ряд решений.

Tim Lesher 20.11.2008 18:15

Настоятельно рекомендую CherryPy 3 по сравнению с другими. Он вообще ничего не запускает в основном цикле и специально разработан для встраивания таким образом.

fumanchu 20.11.2008 23:59

Если вы делаете много параллельных операций, вы можете рассмотреть HTTPServerКамаэлия.

Kamaelia отлично подходит для параллельной работы, но разве это не будет довольно большая библиотека, чтобы включить только минимальный веб-сервер?

Phillip B Oldham 20.11.2008 16:52

Есть много вещей, которые можно было бы вырезать, если бы кто-то был так склонен. Идея сделать несколько «раздач» Камаэлии была высказана, но этого еще не произошло. (Но да, я согласен с тем, что это может быть значительная библиотека, которую можно включить как есть).

Jason Baker 20.11.2008 23:23

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

from circuits.lib.web import Server, Controller

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

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

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

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

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

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

Другие вопросы по теме