【问题标题】:How to add multithreading support to WebApp2?如何为 WebApp2 添加多线程支持?
【发布时间】:2013-03-16 19:21:01
【问题描述】:

我将 Python 2.7 与 WebApp2 一起使用,而且我对它们都是新手。我在 App Engine 之外运行 WebApp2 并关注 official tutorial

假设 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 以异步响应请求!

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

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

【问题讨论】:

    标签: python multithreading webapp2


    【解决方案1】:

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

    线程安全:是的

    this

    【讨论】:

    • 死链接,知道您打算指向的文档是什么吗?
    猜你喜欢
    • 1970-01-01
    • 2012-02-27
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 2010-09-07
    • 2015-12-20
    • 1970-01-01
    相关资源
    最近更新 更多