Как создать локальный веб-сервер для моих сценариев python?

Я хочу использовать локальный веб-сервер для запуска серии скриптов python для пользователя. По каким-то неизбежным причинам python script должен выполняться локально, а не на сервере. В результате я буду использовать HTML + браузер в качестве пользовательского интерфейса, с которым мне удобно, для интерфейса.

Я искал, следовательно, для облегченного веб-сервера, который может выполнять скрипты python, сидя в фоновом режиме на машине, в идеале в качестве службы Windows. Безопасность и расширяемость не являются первоочередными приоритетами, так как все они работают внутри небольшой сети.

Должен ли я запускать собственный веб-сервер python в качестве службы Windows (в этом случае, как)? Или же просто установить Apache на пользовательскую машину и запустить CGI? Поскольку это все локально, производительность также не является проблемой.

Или я пропущу что-то очевидное?

Ответы

Ответ 1

Не тратьте много времени на создание службы Windows.

Не тратьте много времени на Windows Apache.

Просто запустите службу Python, которая отвечает на запросы HTTP.

Посмотрите https://docs.python.org/2/library/basehttpserver.html
https://docs.python.org/3/library/http.server.html для версии 3
Python предлагает HTTP-сервер, который вы можете расширить с помощью своих серверных методов.

Посмотрите http://docs.python.org/library/wsgiref.html
Python предлагает эталонную реализацию WSGI, которая делает ваш сервер легким и совместимым со стандартами.

Также http://fragments.turtlemeat.com/pythonwebserver.php


"Я пытаюсь не заставить пользователя запускать файлы python из командной строки".

Я не вижу, как щелчок по веб-странице отличается от нажатия значков на рабочем столе.

Запуск веб-сервера на основе Python относительно прост, если у вас есть веб-сервер. Сначала создайте сервер. Позже вы можете убедиться, что сервер запущен. Давайте рассмотрим несколько способов.

  • Пользователь не может использовать случайный браузер для открытия вашей локальной страницы. Им нужна закладка для запуска "localhost: 8000/myspecialserverinsteadofthedestop/" Эта закладка может быть .BAT файлом, который (1) запускает сервер, (2) запускает firefox с правильным исходным URL-адресом.

  • Вы можете поместить сервер в начало пользователя - это меню.

  • Вы можете сделать свою программу Python "службой" Windows.

Ответ 2

Лучший способ - создать собственный локальный сервер с помощью командной строки.

  • Создайте новую папку: Project
  • Создайте новую папку внутри проекта и назовите ее как "cgi-bin" (без кавычек)
  • Вставьте свой .py файл в папку cgi-bin
  • Откройте cmd и перейдите в каталог, из которого вы хотите запустить сервер, и введите "python -m CGIHTTPServer" (без кавычек)
  • Свернуть окно cmd и открыть браузер и ввести "localhost: 8000/cgi-bin/yourpythonfilename.py" (без кавычек).

Ответ 3

Запуск собственного веб-сервера python в качестве службы Windows не должно быть проблемой. Ознакомьтесь с документацией для написания служб Windows (win32api, ActiveState python) в python, а также документацией для подкласса BaseHttpServer и SimpleHttpServer.

BTW: У меня был аналогичный вопрос о stackoverflow: Как остановить BaseHTTPServer.serve_forever() в подклассе BaseHTTPRequestHandler?

В принципе, вы подклас BaseHTTPServer (вы все равно...), а затем... но просто прочитали принятый ответ - он установил меня на правильный путь!