App Engine:time.sleep()是否计入我的配额?

kov*_*nin 10 python google-app-engine cprofile

嘿.我正在开发一个App Engine应用程序,该应用程序涉及对Google Maps API的查询以进行地理编码.谷歌地图不喜欢太多的请求,所以我在每个请求之间放置了1秒的延迟time.sleep(1).

我注意到我的配额在我的GAE仪表板中运行不足,并决定进行一个简短的测试:

import cProfile
import time

def foo():
    time.sleep(3)

cProfile.run('foo()')
Run Code Online (Sandbox Code Playgroud)

这给了我以下输出:

   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}
Run Code Online (Sandbox Code Playgroud)

因此它表示它消耗3个CPU秒time.sleep(3).现在我想知道这样的呼叫是否计入GAE提供的配额限制.如果确实如此,那么在API调用地理编码之间造成延迟的另一种方法是什么?

谢谢.

Sud*_*han 17

你当然不想试图在一个完全从头开始设计的系统中睡觉,以便在绝对最短的时间内完成请求:D

您可以做的是为每个地理编码创建一个任务,(查看延迟库).您需要为此任务指定一个队列,然后只需将队列上的速率限制设置为您认为地图地理编码器可能感觉舒适的任何内容.

这样每个地理编码都会运行,并且你永远不会超过你设置的速率限制,并且你不需要做任何管道.