2009-05-18 28 views
15

Tôi đang tìm cách sử dụng máy chủ web cục bộ để chạy một loạt các tập lệnh python cho người dùng. Vì nhiều lý do không thể tránh khỏi, tập lệnh python phải chạy cục bộ, không phải trên máy chủ. Do đó, tôi sẽ sử dụng trình duyệt HTML + làm giao diện người dùng mà tôi cảm thấy thoải mái với giao diện người dùng.Làm cách nào để tạo một máy chủ web cục bộ cho các tập lệnh python của tôi?

Do đó, tôi đã tìm kiếm một máy chủ web nhẹ có thể thực thi các tập lệnh python, nằm ở chế độ nền trên máy, lý tưởng là dịch vụ Windows. Bảo mật và khả năng mở rộng không phải là ưu tiên cao vì tất cả đều chạy trong nội bộ trên một mạng nhỏ.

Tôi có nên chạy máy chủ web python gốc làm dịch vụ Windows (trong trường hợp này, cách thực hiện) không? Hay là dễ dàng cài đặt Apache vào máy của người dùng và chạy như CGI? Vì đây là tất cả các địa phương, hiệu suất không phải là một vấn đề hoặc.

Hoặc tôi có thiếu điều gì đó hiển nhiên không?

Trả lời

15

Đừng lãng phí nhiều thời gian tạo dịch vụ Windows.

Đừng lãng phí nhiều thời gian trên Windows Apache.

Chỉ cần tạo một dịch vụ Python phản hồi các yêu cầu HTTP.

Nhìn vào https://docs.python.org/2/library/basehttpserver.html
https://docs.python.org/3/library/http.server.html cho phiên bản 3
Python cung cấp một máy chủ HTTP mà bạn có thể mở rộng với các phương pháp server-side của bạn.

Nhìn vào http://docs.python.org/library/wsgiref.html
Python cung cấp triển khai tham chiếu WSGI giúp máy chủ của bạn dễ dàng và tuân thủ tiêu chuẩn.

Cũng http://fragments.turtlemeat.com/pythonwebserver.php


"Tôi đang cố gắng để tránh làm cho python thứ người sử dụng chạy từ dấu nhắc lệnh."

Tôi không thấy cách nhấp vào trang web khác với việc nhấp vào biểu tượng màn hình.

Bắt đầu một máy chủ web dựa trên Python là tương đối dễ dàng, một khi bạn có máy chủ web. Đầu tiên, hãy xây dựng máy chủ. Sau đó, bạn có thể đảm bảo máy chủ khởi động. Hãy xem xét một số cách.

  1. Người dùng của bạn không thể sử dụng trình duyệt ngẫu nhiên để mở trang địa phương của bạn. Họ cần một bookmark để khởi chạy "localhost: 8000/myspecialserverinsteadofthedestop /" Dấu trang đó có thể là một tệp .BAT mà (1) chạy máy chủ, (2) chạy firefox với URL ban đầu thích hợp.

  2. Bạn có thể đặt máy chủ trong menu bắt đầu của người dùng này.

  3. Bạn có thể làm cho chương trình Python của bạn trở thành "dịch vụ" cửa sổ.

+0

Vì vậy, tôi cần phải khiến người dùng khởi động máy chủ mỗi lần họ muốn sử dụng khung công tác? Tôi đang cố gắng để * tránh * làm cho người dùng chạy các công cụ python từ dấu nhắc lệnh. Liên kết rùa sẽ cần phải được chạy thủ công trừ khi nó là một dịch vụ. –

+0

+1 cho wsgiref, cách tuyệt vời để kiểm tra các tập lệnh Web Python cục bộ trên máy của bạn. – bortzmeyer

0

Chạy máy chủ web trăn bản địa dưới dạng dịch vụ cửa sổ phải không có trí tuệ. Kiểm tra các tài liệu hướng dẫn để viết các dịch vụ windows (win32api, ActiveState python) trong python và cũng là tài liệu cho subclassing BaseHttpServer và SimpleHttpServer.

BTW: Tôi đã có một câu hỏi tương tự trên stackoverflow: How to stop BaseHTTPServer.serve_forever() in a BaseHTTPRequestHandler subclass?

Về cơ bản, bạn phân lớp BaseHTTPServer (bạn phải anyway ...) và sau đó ... nhưng chỉ cần đọc các câu trả lời được chấp nhận - đó đặt tôi trên đi đúng hướng!

+0

Tôi đã được thông qua tất cả các tài liệu tôi có thể nhìn thấy trên chạy một BaseHTTPServer như một dịch vụ, nhưng tôi không thể xem làm thế nào để làm cho nó bị gián đoạn (vì vậy nó sẽ dừng lại và bắt đầu đúng). IIS có nghĩa là học hỏi nhiều hơn và tôi đã hy vọng sẽ đi với * đơn giản * ... –

1

Cách tốt nhất là tạo máy chủ cục bộ của riêng bạn bằng cách sử dụng dấu nhắc lệnh.

  1. Tạo một thư mục mới nói dự án
  2. Tạo một thư mục mới bên trong dự án & tên nó là "cgi-bin" (không có dấu ngoặc kép)
  3. Dán tập tin py của bạn bên trong thư mục cgi-bin
  4. Mở cmd và thay đổi thư mục mà từ đó bạn muốn chạy máy chủ và nhập "python -m CGIHTTPServer" (không có dấu ngoặc kép)
  5. Thu nhỏ cửa sổ cmd & mở trình duyệt của bạn và nhập "localhost: 8000/cgi-bin/yourpythonfilename.py "(không có dấu ngoặc kép).
Các vấn đề liên quan