【问题标题】:Getting python scripts to run in http simple server让 python 脚本在 http 简单服务器中运行
【发布时间】:2017-11-05 08:21:54
【问题描述】:

我有一个简单的 Python 脚本,我想用作网站:

import SimpleHTTPServer
import SocketServer

PORT = 8000

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT
httpd.serve_forever()

我在那个文件夹中并运行

$ python3 -m http.server 

然后我访问 http://hassbian.local:8000/song.py

终端这么说,我将文件作为 txt 文件获取,脚本不会执行。

Serving HTTP on 0.0.0.0 port 8000 ...
192.168.1.115 - - [04/Jun/2017 14:19:59] "GET / HTTP/1.1" 200 -
192.168.1.115 - - [04/Jun/2017 14:20:04] "GET /song.py HTTP/1.1" 200 -

在树莓派上运行

【问题讨论】:

  • 你不能像这样执行脚本。 python3 -m http.server 只会提供您运行它的目录中的文件。
  • 我应该改用什么?
  • 不一定非要python,任何简单的脚本语言我都可以。
  • 做一个基本的flask 应用程序可能最简单。
  • 你想做什么?你想建立一个网站或其他什么?

标签: python linux server


【解决方案1】:

SimpleHTTPServer 不做 CGI。如果你想要 CGI,你必须使用 CGIHTTPServer

此模块可以在 Unix 和 Windows 系统上运行 CGI 脚本。

我不确定这是否是您真正想要的,但以您显示的方式调用 python 脚本是 CGI。 CGI 是一种非常古老的做事方式。使用 python 运行简单的 web 应用程序现在几乎完全是 webapp2 或flask 的域。而涉及数据库的更复杂的应用程序则由 django 主导。

【讨论】:

  • 好消息,cgi 看起来不错,因为它已经在我的 rasberry pi 上运行,我正在创建一个小型 web 服务,它将文件夹中的几个文件作为 json 对象提供服务,cgi 就足够了?
  • 好吧,如果只是 json,SimpleHTTPServer 就可以了。你的问题表明你试图运行一个 python 文件。
  • 嗯,它是一个基于文件夹内容动态创建的 json 文件。
猜你喜欢
  • 1970-01-01
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-26
相关资源
最近更新 更多