我正在使用带有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的问题。在其他浏览器中,一切都按预期工作,因此该示例已经在多个线程中运行。我不知道如何在这里关闭问题。