将变量传递给 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()

...