2009-05-18 18 views
15

Szukam używać lokalnego serwera WWW do uruchomienia serii skryptów Pythona dla użytkownika. Z różnych nieuniknionych przyczyn skrypt Pythona musi działać lokalnie, a nie na serwerze. W rezultacie wykorzystam przeglądarkę HTML + jako interfejs użytkownika, z którym czuję się komfortowo, z myślą o interfejsie użytkownika.Jak mogę utworzyć lokalny serwer WWW dla moich skryptów Pythona?

Szukałem zatem lekkiego serwera WWW, który może wykonywać skrypty w języku Python, siedząc w tle na komputerze, idealnie jako usługa Windows. Bezpieczeństwo i rozszerzalność nie są priorytetami, ponieważ wszystko działa wewnętrznie w małej sieci.

Czy powinienem uruchomić macierzysty serwer sieciowy Pythona jako usługę Windows (w takim przypadku, jak)? A może tak samo łatwo zainstalować Apache na komputerze użytkownika i uruchomić jako CGI? Ponieważ to wszystko jest lokalne, wydajność też nie jest problemem.

A może brakuje mi czegoś oczywistego?

Odpowiedz

15

Nie trać czasu na tworzenie usługi Windows.

Nie marnuj dużo czasu na Windows Apache.

Po prostu wykonaj usługę Python, która odpowiada na żądania HTTP.

Spójrz na https://docs.python.org/2/library/basehttpserver.html
https://docs.python.org/3/library/http.server.html dla wersji 3
Python oferuje serwer HTTP, który można przedłużyć swój metod po stronie serwera.

Spójrz na http://docs.python.org/library/wsgiref.html
Python oferuje implementację referencyjną WSGI, która sprawia, że ​​serwer jest łatwy w obsłudze i zgodny ze standardami.

także http://fragments.turtlemeat.com/pythonwebserver.php


"Próbuję uniknąć dokonywania run użytkownik Pythona rzeczy z wiersza poleceń."

Nie widzę sposobu, w jaki kliknięcie strony internetowej różni się od klikania ikon na pulpicie.

Uruchamianie serwera opartego na Pythonie jest stosunkowo proste, gdy już masz serwer WWW. Najpierw zbuduj serwer. Później możesz upewnić się, że serwer się uruchamia. Spójrzmy na kilka sposobów.

  1. Twój użytkownik nie może użyć losowej przeglądarki, aby otworzyć stronę lokalną. Potrzebują zakładki do uruchomienia "localhost: 8000/myspecialserverinsteadofthedestop /" Ta zakładka może być plikiem .BAT, który (1) uruchamia serwer, (2) uruchamia firefox z poprawnym początkowym adresem URL.

  2. Możesz umieścić serwer w początkowym miejscu użytkownika - tym menu.

  3. Możesz uczynić swój program w Pythonie "usługą" Windows.

+0

Muszę więc zachęcić użytkowników do uruchomienia serwera za każdym razem, gdy chcą korzystać z architektury? Próbuję * uniknąć * spowodowania, że ​​użytkownik uruchamia polecenie python z wiersza poleceń. Link turtlemeat musiałby być uruchamiany ręcznie, chyba że byłby usługą. –

+0

+1 dla wsgiref, doskonały sposób na przetestowanie skryptów Web w języku Python na komputerze. – bortzmeyer

0

Uruchamianie rodzimego serwera python jako usługi systemu Windows powinno być nie myślenia. Zapoznaj się z dokumentacją dotyczącą pisania usług Windows (win32api, pyton ActiveState) w pythonie, a także dokumentację dla podklasy BaseHttpServer i SimpleHttpServer.

BTW: miałem podobne pytanie na StackOverflow: How to stop BaseHTTPServer.serve_forever() in a BaseHTTPRequestHandler subclass?

Zasadniczo, podklasa BaseHTTPServer (trzeba w każdym razie ...) a potem ... ale po prostu czytać zaakceptowane odpowiedź - że postawił mnie na właściwy tor!

+0

Przeszedłem przez wszystkie dokumenty, jakie widzę, uruchamiając usługę BaseHTTPServer jako usługę, ale nie mogłem zobaczyć, jak można ją przerwać (aby mogła się zatrzymać i poprawnie uruchomić). IIS oznaczałoby o wiele więcej nauki i miałem nadzieję, że pójdę z * prostym * ... –

1

Najlepszym sposobem jest utworzenie własnego lokalnego serwera za pomocą wiersza polecenia.

  1. Utwórz nowy folder powiedzieć Projekt
  2. Utwórz nowy folder wewnątrz projektu & nazwą go jako "cgi-bin" (bez cudzysłowów)
  3. Wklej plik .py wewnątrz folderu cgi-bin
  4. Otwórz cmd i przejdź do katalogu, z którego chcesz uruchomić serwer i wpisz "python -m CGIHTTPServer" (bez cudzysłowów)
  5. Zminimalizuj okno cmd & otwórz przeglądarkę i wpisz "localhost: 8000/cgi-bin/yourpythonfilename.py "(bez cudzysłowów).
Powiązane problemy