Как создать локальный веб-сервер для моих сценариев 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 (вы все равно...), а затем... но просто прочитали принятый ответ - он установил меня на правильный путь!