App Engine的:是time.sleep()对我配额计数?
-
27-09-2019 - |
题
嘿。我的工作,涉及到查询地理编码的谷歌地图API的App Engine应用程序。谷歌地图不喜欢太多的要求,所以我把与time.sleep(1)
每个请求之间有1秒的延迟。
我发现我的配额在我GAE仪表盘运行低,决定运行一个短的测试:
import cProfile
import time
def foo():
time.sleep(3)
cProfile.run('foo()')
这给了我以下输出:
4 function calls in 3.003 CPU seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 3.003 3.003 <stdin>:1(foo)
1 0.000 0.000 3.003 3.003 <string>:1(<module>)
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
1 3.003 3.003 3.003 3.003 {time.sleep}
因此,它说,这是耗时一个time.sleep(3)
3 CPU秒。现在,如果喜欢这些调用偏向于GAE提供了配额限制中我不知道。如果是的话,是什么使得API调用之间的延迟为地理编码的其他方式?
感谢。
解决方案
您肯定不希望试图睡在那是完全设计的从地上爬起来,以完成请求的绝对最短的时间内系统:d
您可以做什么,而不是,是为每个地理编码任务,(请查看递延库)。你要指定一个队列这个任务,那么就设置为任何你觉得地理编码器可能是熟悉地图的队列速率限制。
这样每个地理编码将运行,并且你永远不会比你设定的限速快,你不需要做任何管道。
其他提示
我相当肯定,队列中的任务也算朝着GAP CPU使用率。关于sleep()
,我不认为会出现CPU“惩罚”从,但我认为这是一个不好的风格。
为什么要睡觉?在你的任务,做一个单一的地理编码和简单地张贴在3secs队列调用另一个自己。参见参数countdown
当调用的http://代码.google.com /国际/ EL /应用服务引擎/文档/蟒/任务队列/ functions.html#附加。
这问题报道称,记者尚未结算为)由time.sleep(CPU发生秒,但他们表现出了他们的将Appstats。这是非常有可能将Appstats用途CPROFILE为好。睡眠是人们试图使他可以使用地理编码较大的一组项目的更好asyncronous代理重要。
不隶属于 StackOverflow