GAE标准异步提取无法正常工作

时间:2018-06-29 08:39:43

标签: google-app-engine asynchronous

我正在关注文档,但似乎请求仍在同步进行。

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上运行

1 个答案:

答案 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