我将 Python 2.7 与 WebApp2 一起使用,而且我对它们都是新手。我在 App Engine 之外运行 WebApp2 并且正在关注官方教程。
假设 HelloWord 使用粘贴网络服务器并且工作正常,但是如果我这样修改它(添加了一些睡眠):
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 以异步响应请求!
PS 附带问题:如果我使用 Go,我可以只运行 goroutine 中的每个处理程序来实现基本并发吗?或者它们(goroutines)应该只用于小功能吗?由于我还没有与 Python 结婚,我正在评估任何替代方案。
编辑:我发现这是 Google Chrome 的问题,而不是 Python 的问题。在其他浏览器中,一切都按预期工作,因此该示例已经在多个线程中运行。不过,我不知道如何在这里结束问题。