将变量传递给 Python web.py 网络服务器以供 GET/POST 处理使用
Pass variable to Python web.py webserver for use by GET/POST handling
我有一个简单的 web.py 网络服务器。根据对网络服务器的 POST 请求,我想 修改 我在 main()
中创建的对象。但我不知道如何将变量注入网络服务器,以便 index
class 可以访问它。
这是我的代码:
import web
import multiprocessing
class index:
def POST(self):
# modify 'obj' instance of MyObject from main()
class MyWebApp(web.application):
def run(self, port=8080, *middleware):
func = self.wsgifunc(*middleware)
return web.httpserver.runsimple(func, ('0.0.0.0', port))
urls = ( '/', 'index' )
app = MyWebApp(urls, globals())
def launchWebApp(_port=8080):
app.run(port=_port)
def main():
obj = MyObject()
port=36011
p = multiprocessing.Process(target=launchWebApp, args=(port,))
p.start()
if __name__ == "__main__":
main()
如何让 obj
可供 index::POST
访问?
你不能真正 "pass" 它,但你可以使你的 obj
全局,或者你可以将它附加到 web.config
,这(也是)全局的。例如。
class index:
def POST(self):
web.config.obj.update({'foo': 'bar'})
...
def main():
web.config.obj = MyObject()
...
我有一个简单的 web.py 网络服务器。根据对网络服务器的 POST 请求,我想 修改 我在 main()
中创建的对象。但我不知道如何将变量注入网络服务器,以便 index
class 可以访问它。
这是我的代码:
import web
import multiprocessing
class index:
def POST(self):
# modify 'obj' instance of MyObject from main()
class MyWebApp(web.application):
def run(self, port=8080, *middleware):
func = self.wsgifunc(*middleware)
return web.httpserver.runsimple(func, ('0.0.0.0', port))
urls = ( '/', 'index' )
app = MyWebApp(urls, globals())
def launchWebApp(_port=8080):
app.run(port=_port)
def main():
obj = MyObject()
port=36011
p = multiprocessing.Process(target=launchWebApp, args=(port,))
p.start()
if __name__ == "__main__":
main()
如何让 obj
可供 index::POST
访问?
你不能真正 "pass" 它,但你可以使你的 obj
全局,或者你可以将它附加到 web.config
,这(也是)全局的。例如。
class index:
def POST(self):
web.config.obj.update({'foo': 'bar'})
...
def main():
web.config.obj = MyObject()
...