Appengine Python DevServer模块后台线程500错误

时间:2014-08-15 22:23:13

标签: python multithreading google-app-engine app-engine-modules gae-module

我使用的是SDK的1.9.9版,我遇到了devserver的问题。我有一个带有1个实例的手动缩放模块。我为webapp2.RequestHandler创建了/_ah/start。在那个处理程序中,我开始一个后台线程当我在devserver中运行我的应用程序时,_ah/start处理程序返回200,但/_ah/background将随机返回500个错误。一段时间后(通常是一两分钟,但有时甚至更多),500错误会停止,但会每隔几个小时再次随机发生。似乎每次我打开一个新的浏览器标签(Chrome),我都会得到同样的错误。任何人都知道可能导致这种情况的原因吗?

以下是RequestHandler的{​​{1}}:

/_ah/start

这是500错误:

class StartupHandler(webapp2.RequestHandler):
    def get(self):
        runtime.set_shutdown_hook(shutdown_hook)

        global foo
        if foo is None:
            foo = Foo()

        background_thread.start_new_background_thread(do_foo, [])

        self.response.http_status_message(200)

2 个答案:

答案 0 :(得分:2)

那么这可能不是答案,但完成特定任务分配到后端需要多长时间?似乎是并发问题

答案 1 :(得分:1)

看起来问题(据我目前所知)是我使用PyCharm,它在进入或退出窗口时同步项目的文件。即使没有更改,这也会重写项目文件,这会导致devserver重新启动所有实例,从而导致500错误。

More info on PyCharm Synchronization

Link to issue at PyCharm