【问题标题】:A python server that executes python scripts执行python脚本的python服务器
【发布时间】:2013-10-18 17:17:52
【问题描述】:

这学期我在上python课,我想以网页的形式在我的程序中添加图形用户界面。一部分是懒得学Tkinter,一部分是在挑战自己,一部分就是喜欢用HTML/JS编写接口。

我知道使用 SimpleHTTPServer 创建 HTTP 服务器的基础知识,但我需要一种方法让我的网页在服务器上将 ajax 命令触发到 python 脚本,然后在服务器端执行,然后接收脚本输出.有点像Sage 做事的方式。

如何为 SimpleHTTPServer 创建一个扩展,然后我可以使用它来提供 python 脚本的输出?我需要一个非常通用的解决方案,以便给定我编写的任何 python 脚本,我可以轻松地将它包装在某种接口中,将它放在服务器的文件夹中,而无需做任何其他事情,只需使用 AJAX 调用它,我的服务器将处理其余的。

我目前的想法是拥有一个我的脚本可以扩展的ServerSideScript 类,以及一个名为output 的函数。我拥有的每个脚本都应该包含一个名为 Script 的 ServerSideScript 子类。当要求服务器提供服务时,例如 foo.py,它会注意到扩展并执行以下操作:

if self.path[-3:]: == ".py":
    return getScriptOutput(self.path)

...

def getScriptOutput(self, path):
    from path import Script # obviously not going to work, since path is a string
    return Script().output()

由于评论中指出的原因,这是行不通的,我知道 import_module 函数之类的东西,但导入似乎是一种丑陋的开始方式。

有什么推荐的?

【问题讨论】:

  • 你见过CGIHTTPServer吗?
  • @MartijnPieters 这是默认设置,对吧?我不一定能在学校计算机上安装额外的模块。
  • 为什么不使用合适的网络服务器和像 Flask 这样的微框架?
  • @JackM:这是标准库的一部分,是的。查看链接。
  • @DanielRoseman 见上面的评论——但我也很想自己写代码,如果它可以保持在合理的最小限度的话。

标签: python server-side-scripting simplehttpserver


【解决方案1】:

Python 随附电池; CGIHTTPServer 将使用 CGI 标准运行 Python 脚本:

CGIHTTPServer 模块定义了一个请求处理程序类,接口与BaseHTTPServer.BaseHTTPRequestHandler 兼容,并从SimpleHTTPServer.SimpleHTTPRequestHandler 继承行为,但也可以运行 CGI 脚本。

只要 Python 脚本具有 .py.pyw 扩展名并且是可执行的,它就会运行它们;映射到文件的其他路径被视为常规文件,而是提供其内容。

您可能也对 cgicgitb 模块感兴趣,以帮助简化 CGI 脚本开发。

【讨论】:

【解决方案2】:

您可能想看看IPython notebooks - 它本质上为您提供了一个基于 Web 的交互式 Python shell,它甚至与 matplotlib 等集成。您可以将 Python 脚本保存为笔记本,在语句之间添加文本等。

如果您想共享输出,但不共享交互性,您也可以使用nbviewer

【讨论】:

  • 我这样做是为了编码的乐趣,而不是为了实用价值。不过谢谢。
猜你喜欢
  • 2015-11-24
  • 1970-01-01
  • 1970-01-01
  • 2016-06-26
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 2018-08-04
  • 1970-01-01
相关资源
最近更新 更多