如何为我的Python脚本创建一个本地Web服务器?

18

我希望使用本地Web服务器为用户运行一系列Python脚本。由于各种不可避免的原因,Python脚本必须在本地而非服务器上运行。因此,我将使用HTML+浏览器作为前端界面,这是我熟悉的。

因此,我一直在寻找一个轻量级的Web服务器,可以在后台运行Python脚本,最好作为Windows服务。安全性和可扩展性不是高优先级,因为它们都在小型网络内部运行。

我应该将本机Python Web服务器作为Windows服务运行(如果是这样,如何操作)?还是将Apache安装到用户的机器上并作为CGI运行就像这么简单?既然这都是本地的,所以性能也不是问题。

还是我忽略了什么明显的东西?

4个回答

17

不要浪费太多时间创建Windows服务。

不要花费大量时间在Windows Apache上。

只需创建一个响应HTTP请求的Python服务。

请参阅https://docs.python.org/2/library/basehttpserver.htmlhttps://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东西。"

我不认为从网页点击与点击桌面图标有什么区别。

一旦你拥有了Web服务器,基于Python启动Web服务器相对容易。首先构建服务器,然后可以确保服务器开始工作。下面是一些方法:

  1. 用户无法使用任意浏览器打开您的本地页面。他们需要一个书签来启动“localhost:8000/myspecialserverinsteadofthedestop/”。该书签可以是一个.BAT文件,其中(1)运行服务器,(2)运行Firefox并设置正确的初始URL。

  2. 您可以将服务器放在用户的“开始菜单”中。

  3. 您可以将Python程序制作为Windows“服务”。


那么每次用户想要使用框架时,我需要让他们启动服务器吗?我试图避免让用户从命令提示符中运行Python代码。除非它是一个服务,否则turtlemeat链接需要手动运行。 - Phil H
+1 for wsgiref,是在本机上测试Python Web脚本的绝佳方式。 - bortzmeyer

3

最简单的步骤是导航到您的文件所在的文件夹并运行http.server模块

cd /yourapp
python3 -m http.server

在控制台中,你应该看到类似以下的内容:

正在监听 HTTP 请求,端口为 8000 (http://0.0.0.0:8000/) ...


2

最好的方法是使用命令提示符创建自己的本地服务器。

  1. 新建一个文件夹,例如Project。
  2. 在Project文件夹内新建一个名为“cgi-bin”的文件夹(不带引号)。
  3. 将.py文件粘贴到cgi-bin文件夹中。
  4. 打开命令提示符并切换到您想要运行服务器的目录,输入“python -m CGIHTTPServer”(不带引号)。
  5. 最小化命令提示符窗口,打开浏览器并输入“localhost:8000/cgi-bin/yourpythonfilename.py”(不带引号)。

C:\Program Files\Python39\python.exe:没有名为CGIHTTPServer的模块。 - Murugan

-1

在Windows服务中运行本地Python Web服务器应该是易如反掌的。请查看有关使用Python编写Windows服务(win32api,ActiveState Python)以及子类化BaseHttpServer和SimpleHttpServer的文档。

顺便说一下:我在stackoverflow上有一个类似的问题:如何停止BaseHTTPServer.serve_forever()在BaseHTTPRequestHandler子类中?

基本上,您需要子类化BaseHTTPServer(无论如何都必须这样做...),然后...但只需阅读被接受的答案-它让我走上了正确的轨道!


我已经查看了所有关于将BaseHTTPServer作为服务运行的文档,但是我无法找到如何使其可中断(以便正确停止和启动)。使用IIS需要学习更多内容,而我希望选择简单的方式... - Phil H

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接