如何为WebApp2添加多线程支持?

时间:2013-03-16 19:21:02

标签: python multithreading webapp2

我正在使用带有WebApp2的Python 2.7,而且我对它们都是新手。我正在App Engine之外运行WebApp2并且正在关注official tutorial

如果HelloWord使用粘贴Web服务器并且工作正常,但是如果我这样修改它(添加一些睡眠):

import webapp2

class HelloWebapp2(webapp2.RequestHandler):
    def get(self):
        import time
        time.sleep(6)
        self.response.write('Hello, webapp2!')

app = webapp2.WSGIApplication([
    ('/', HelloWebapp2),
], debug=True)

def main():
    from paste import httpserver
    httpserver.serve(app, host='127.0.0.1', port='8080', use_threadpool=True)

if __name__ == '__main__':
    main()

同时打开几个标签,显然这个HelloWord在一个线程中运行。我添加了use_threadpool = True仅仅是为了详细程度,据我所知(从阅读粘贴文档)它应该使用多线程,即使没有线程池。

我尝试使用谷歌搜索,但不幸的是,我得到的是“当webapp2_extras.local模块可用时,webapp2是线程安全的”。这对我没有任何帮助。

请告诉我如何修改此HelloWord以异步回答请求!

P.S。附带问题:如果我使用Go,我可以在goroutine中运行每个处理程序来实现基本并发吗?或者它们(goroutines)是否只用于小功能?由于我还没有和Python结婚,我正在评估任何替代方案。

编辑:我发现这是Google Chrome的问题,而不是Python的问题。在其他浏览器中,一切都按预期工作,因此该示例已经在多个线程中运行。我不知道如何在这里关闭问题。

1 个答案:

答案 0 :(得分:0)

您需要将以下标志添加到app.yaml文件中:

  

线程安全:是的

请参阅this