嘿。我正在开发一个 App Engine 应用程序,该应用程序涉及对 Google Maps API 进行地理编码的查询。 Google 地图不喜欢太多请求,因此我在每个请求之间设置了 1 秒的延迟time.sleep(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}
所以它说它消耗了 3 CPU 秒time.sleep(3)
。现在我想知道这样的调用是否计入 GAE 提供的配额限制。如果确实如此,那么在地理编码的 API 调用之间造成延迟的其他方法是什么?
Thanks.
您当然不想尝试在一个完全从头开始设计的系统中睡觉,以便在绝对最短的时间内完成请求:D
相反,您可以做的是为每个地理编码创建一个任务(查看延迟库)。您需要为此任务指定一个队列,然后只需将队列的速率限制设置为您认为地图地理编码器可能满意的值即可。
这样,每个地理编码都会运行,并且您永远不会超过您设置的速率限制,并且不需要进行任何管道操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)