Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine GAE Python:Appstats可以记录在后台线程中生成的RPC吗?_Google App Engine_Python 2.7_Webapp2_App Engine Ndb_Appstats - Fatal编程技术网

Google app engine GAE Python:Appstats可以记录在后台线程中生成的RPC吗?

Google app engine GAE Python:Appstats可以记录在后台线程中生成的RPC吗?,google-app-engine,python-2.7,webapp2,app-engine-ndb,appstats,Google App Engine,Python 2.7,Webapp2,App Engine Ndb,Appstats,我使用Appstats记录了我在GAE项目中的ndb使用情况,它运行得非常好。我的Appstats设置如下 最近,我移动了一些ndb代码在后台线程上执行,但这些ndb调用不再显示在Appstats控制台UI上 我在dev和prod中都尝试过Appstats,它们不记录后台线程中生成的ndb RPC 为了澄清问题,我的意思是: Appstats适用于: class MyHandler(webapp2.RequestHandler): def put(self): ...

我使用Appstats记录了我在GAE项目中的ndb使用情况,它运行得非常好。我的Appstats设置如下

最近,我移动了一些ndb代码在后台线程上执行,但这些ndb调用不再显示在Appstats控制台UI上

我在dev和prod中都尝试过Appstats,它们不记录后台线程中生成的ndb RPC

为了澄清问题,我的意思是: Appstats适用于:

class MyHandler(webapp2.RequestHandler):
    def put(self):
        ...
        do_a_lot_of_ndb_work()
        ...
但Appstats不适用于:

class MyHandler(webapp2.RequestHandler):
    def put(self):
        ...
        background_thread.start_new_background_thread(do_a_lot_of_ndb_work, [])
        ...
我是否可以更改appengine_config.py中的一些参数,或者采取一些措施使Appstats同时适用于这两者

更新
上面的代码段在后端运行(基本的扩展,最大实例数=1),线程的使用引用自您不应该以这种方式使用线程。执行运行时间超过60秒请求窗口的函数的正确方法是使用Taskqueue API。在任务超时之前,您有10分钟的时间

如果你真的需要做更多的处理,那就考虑使用后端

如果您希望异步运行ndb调用以提高性能,那么这里介绍的tasklet装饰器非常优秀,强烈推荐:

(SDK的最新版本1.8.4允许您使用@transactional_tasklet decorator在tasklet中运行事务。)

我使用这三种方法来处理那些不需要占用主请求线程的东西,而appstats在所有这些情况下都工作得很好


您还应该仔细查看您正在尝试做的事情,看看是否可以合理地将其分为更小的部分,因为如果您需要10分钟以上的时间来处理,可能会花费很多。

谢谢您的回复。我应该在我的问题中提到它,代码片段已经在后端(模块模式)中运行。你的意思是Appstats不记录RPC,因为MyHandler在线程运行时已完成,所以不会记录线程中发生的RPC吗?差不多。Appstats通过在appengine_config.py中设置的中间件记录附加到请求处理程序的RPC。请求处理程序返回后,Appstats将立即停止录制。由于它在后端运行,您可以尝试让请求无限期地运行,而不是生成新线程。只需确保它优雅地处理出口即可感谢您对Appstats的解释。这是另一个让我决定在后端生成新线程的故事。(未启用计费的项目最多可以有2个模块,我使用了2个模块,我希望同一个后端模块可以处理多个请求,即使它正在处理长时间运行的过程。这就是我在后端生成新线程的原因。)在您的解释之后,我决定让后端直接运行长时间运行的处理,并将后端max_实例增加到2以处理其他请求(如果存在)。