2009-05-18 2 views
15

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

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

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

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

ответ

15

Не тратьте много времени на создание службы 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 относительно прост, если у вас есть веб-сервер. Сначала создайте сервер. Позже вы можете убедиться, что сервер запущен. Давайте посмотрим на некоторые пути.

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

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

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

+0

Так что мне нужно заставить пользователей запускать сервер каждый раз, когда они хотят использовать фреймворк? Я пытаюсь * избегать * заставить пользователя запускать файлы python из командной строки. Ссылка turtlemeat должна запускаться вручную, если это не была услуга. –

+0

+1 для wsgiref, отличный способ проверить ваши скрипты на Python локально на вашем компьютере. – bortzmeyer

0

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

КСТАТИ: У меня был подобный вопрос на StackOverflow: How to stop BaseHTTPServer.serve_forever() in a BaseHTTPRequestHandler subclass?

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

+0

Я прошел через все документы, которые я вижу при запуске BaseHTTPServer в качестве службы, но я не мог понять, как сделать его прерываемым (чтобы он остановился и запустился должным образом). IIS будет означать намного больше обучения, и я надеялся пойти с * простым * ... –

1

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

  1. Создайте новую папку сказать Project
  2. Создайте новую папку внутри проекта & назовите его как "CGI-BIN" (без кавычек)
  3. Вставьте ваш .py файл в папку CGI-BIN
  4. Откройте cmd и перейдите в каталог, из которого вы хотите запустить сервер, и введите «python -m CGIHTTPServer» (без кавычек)
  5. Свернуть окно cmd & Открыть браузер и ввести "localhost: 8000/cgi-bin/yourpythonfilename.py "(без кавычек).
Смежные вопросы