【发布时间】:2014-07-08 21:30:50
【问题描述】:
我正在尝试控制树莓派上的一些硬件,并运行 gevent 服务器以通过网络获取/设置它们。作为背景,我应该注意这不会在公共互联网上运行,并且永远不会有超过 1 个连接。可以把它想象成为一个 adsl 路由器构建一个管理面板......
应用程序将不断地从传感器读取数据并相应地调整输出。目前我有这样的事情:
class MyServer(WSGIServer):
somevalue = 0
def backgroundtask(self, *args, **kwargs):
#note this function should run as frequently as possible
while True:
# do stuff including reading sensors and running motors
self.somemethod(self.somevalue)
gevent.sleep(0)
def __init__(self, listener, handle=None, **kwargs):
WSGIServer.__init__(self, listener, **kwargs)
self.backgroundtask = gevent.spawn(self.backgroundtask)
def application(self, environ, start_response):
status = '200 OK'
headers = [
('Content-Type', 'text/html')
]
yield str(self.somevalue)
这工作正常,如果我解析环境,我可以从传入请求中设置somevalue,但我想要的是能够让 Flask 应用程序在此服务器上获取并设置somevalue,这样我就可以使用所有标准表单处理的东西。
这可能吗?我怎样才能使app=Flask(__name__) 成为服务器的应用程序而不会失去对服务器的self 属性的访问权限?
【问题讨论】: