我正在关注文档,但似乎请求仍在同步进行。
https://cloud.google.com/appengine/docs/standard/python/issue-requests
这是我的代码:
rpcs = []
for url in urls:
rpc = urlfetch.create_rpc()
urlfetch.make_fetch_call(rpc, url)
rpcs.append(rpc)
result = []
for rpc in rpcs:
result.append(rpc.get_result().content)
return result
我进行了一些分析,并使用requests.get
进行了比较,它们所花费的时间完全相同。
我要获取的URL来自不同的站点,因此我确定我在服务器端没有并发限制。
在GAE Standard,Python 2.7上运行
答案 0 :(得分:1)
我让它工作了,但是出于某些原因,仅使用回调。另外,它仅适用于生产,不适用于本地环境。 :D这是工作代码:
from google.appengine.api import urlfetch
import functools
class ClassName(object):
responses = []
def fetch_concurrent_callback(self, rpc):
response = rpc.get_result()
json_response = json.loads(response.content)
self.responses.append(json_response)
def fetch_concurrent(self, urls):
rpcs = []
for url in urls:
rpc = urlfetch.create_rpc()
rpc.callback = functools.partial(self.fetch_concurrent_callback, rpc)
urlfetch.make_fetch_call(rpc, url)
rpcs.append(rpc)
for rpc in rpcs:
rpc.wait()
return self.responses