【发布时间】:2012-05-24 06:08:54
【问题描述】:
我正在尝试让一组 python 脚本向一组微控制器报告它们的状态。
所以我的想法是让每个 python 脚本创建自己的网页,可以由微控制器查看,但是无论如何让脚本本身保持页面服务,即一个 apache 库,这样如果脚本崩溃或未运行页面未提供或在脚本未运行时使页面具有默认值的方法。
【问题讨论】:
标签: python web-services web
我正在尝试让一组 python 脚本向一组微控制器报告它们的状态。
所以我的想法是让每个 python 脚本创建自己的网页,可以由微控制器查看,但是无论如何让脚本本身保持页面服务,即一个 apache 库,这样如果脚本崩溃或未运行页面未提供或在脚本未运行时使页面具有默认值的方法。
【问题讨论】:
标签: python web-services web
你也可以看看twisted.web
一个非常基本的例子:
from twisted.web.server import Site
from twisted.web.resource import Resource
from twisted.internet import reactor
class StatusPageResource(Resource):
isLeaf = True
def __init__(self, param1):
self.param1 = param1
# Call the constructor of the super class
Resource.__init__(self)
def render_GET(self, request):
return "<html><body>%s</body></html>" % self.param1
my_res = Resource()
my_res.putChild('GetStatusPage1', StatusPageResource(param1='abc'))
my_res.putChild('GetStatusPage2', StatusPageResource(param1='xyz'))
factory = Site(my_res)
reactor.listenTCP(8080, factory)
print 'Runnning on port 8080'
reactor.run()
现在将您的浏览器指向http://localhost:8080/GetStatusPage1(例如)
【讨论】:
您可以使用http://docs.python.org/library/simplehttpserver.html 或一些最小的http 服务器框架,例如http://flask.pocoo.org/ 或http://www.cherrypy.org/。
如果您想向您的微控制器提供“实时”信息,请查看comet style 长轮询请求。您基本上会一直下载“页面”并将其作为数据流进行分析,而服务器会在“页面末尾”不断添加更新信息。
【讨论】: