python – App Engine:是否将time.sleep()计入我的配额?
发布时间:2020-12-16 23:02:30 所属栏目:Python 来源:网络整理
导读:嘿.我正在开发一个App Engine应用程序,其中包含查询Google Maps API进行地理编码. Google地图不太喜欢太多的请求,所以我在time.sleep(1)之间的每个请求之间延迟1秒. 我注意到我的GAE仪表板中的配额不足,决定运行一个简短的测试: import cProfileimport time
嘿.我正在开发一个App Engine应用程序,其中包含查询Google Maps API进行地理编码. Google地图不太喜欢太多的请求,所以我在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} 所以说它在一段时间内消耗3个CPU秒(3).现在我想知道这些电话是否符合GAE提供的配额限制.如果是这样,在API地址解析呼叫之间延迟的其他方式是什么? 谢谢. 解决方法
你当然不想试图睡在一个完全从头到尾完成设计的系统,以便在绝对最短的时间内完成请求:D
您可以做的是为每个地理编码创建一个任务(查看deferred library).您需要为此任务指定一个队列,然后将队列上的速率限制设置为地图geocoder可能会感到舒适的任何方式. 这样,每个地理编码都可以运行,你永远不会比你设置的速率上限要快,而且你不需要做任何管道. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |