如何为我的 python 脚本创建本地网络服务器?
Posted
技术标签:
【中文标题】如何为我的 python 脚本创建本地网络服务器?【英文标题】:How can I create an local webserver for my python scripts? 【发布时间】:2010-10-26 23:54:36 【问题描述】:我希望使用本地网络服务器为用户运行一系列 python 脚本。由于各种不可避免的原因,python 脚本必须在本地运行,而不是在服务器上。因此,我将使用 html+浏览器作为前端的 UI,我对此感到满意。
因此,我一直在寻找可以执行 python 脚本的轻量级 Web 服务器,它位于机器的后台,最好是作为 Windows 服务。安全性和可扩展性不是高优先级,因为它们都是在小型网络内部运行的。
我应该将原生 python 网络服务器作为 Windows 服务运行(在这种情况下,如何运行)?还是将 Apache 安装到用户的机器上并像 CGI 一样运行?由于这都是本地的,因此性能也不是问题。
还是我遗漏了一些明显的东西?
【问题讨论】:
【参考方案1】:不要浪费大量时间创建 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 服务器。首先,构建服务器。稍后,您可以确保服务器启动。让我们看看一些方法。
您的用户无法使用随机浏览器打开您的本地页面。他们需要一个书签来启动“localhost:8000/myspecialserverinsteadofthedestop/”该书签可以是一个 .BAT 文件,它 (1) 运行服务器,(2) 使用正确的初始 URL 运行 firefox。
你可以把服务器放在用户的开始-这个菜单中。
您可以让您的 Python 程序成为 Windows“服务”。
【讨论】:
所以我需要让用户在每次他们想使用框架时启动服务器?我试图避免让用户从命令提示符运行 python 的东西。除非是服务,否则龟肉链接需要手动运行。 +1 用于 wsgiref,这是在机器上本地测试 Python Web 脚本的绝佳方式。【参考方案2】:最好的方法是使用命令提示符创建自己的本地服务器。
-
创建一个新文件夹,比如 Project
在项目中创建一个新文件夹并将其命名为“cgi-bin”(不带引号)
将 .py 文件粘贴到 cgi-bin 文件夹中
打开 cmd 并切换到要从中运行服务器的目录并输入“python -m CGIHTTPServer”(不带引号)
最小化 cmd 窗口并打开浏览器并输入“localhost:8000/cgi-bin/yourpythonfilename.py”(不带引号)。
【讨论】:
C:\Program Files\Python39\python.exe: 没有名为 CGIHTTPServer 的模块【参考方案3】:将原生 python 网络服务器作为 Windows 服务运行应该是轻而易举的事。查看使用 python 编写 windows 服务(win32api、ActiveState python)的文档以及子类化 BaseHttpServer 和 SimpleHttpServer 的文档。
顺便说一句:我在 *** 上也有类似的问题:How to stop BaseHTTPServer.serve_forever() in a BaseHTTPRequestHandler subclass?
基本上,您将 BaseHTTPServer 子类化(无论如何您都必须...),然后...但只需阅读已接受的答案 - 它让我走上了正确的轨道!
【讨论】:
我已经阅读了所有关于将 BaseHTTPServer 作为服务运行的文档,但我不知道如何使其可中断(因此它会正常停止和启动)。 IIS 意味着更多的学习,我希望使用 simple...以上是关于如何为我的 python 脚本创建本地网络服务器?的主要内容,如果未能解决你的问题,请参考以下文章
在 Mac 上,如何为 python 脚本创建一个拖放应用程序,其中脚本名称而不是 Python 显示在菜单栏(等)中?