Google app engine GAE标准异步获取不工作

Google app engine GAE标准异步获取不工作,google-app-engine,asynchronous,Google App Engine,Asynchronous,我正在跟踪文档,但看起来请求仍在同步进行 这是我的密码: 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 我使用请求进行了一些分析和

我正在跟踪文档,但看起来请求仍在同步进行

这是我的密码:

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
我使用
请求进行了一些分析和比较。get
和它们花费的时间完全相同

我获取的URL来自不同的站点,因此我确信在服务器端没有并发限制


在GAE标准上运行的Python2.7可以正常工作,但出于某种原因,只能通过回调实现。此外,它仅适用于生产,不适用于当地环境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

我自己遵循了命令,可以确认调用是异步进行的。为什么您认为请求仍然是同步的?我相信你没有抓住要点。异步和同步之间的区别在于,同步请求会阻止客户端,直到操作完成,而另一个客户端则不会。请@komarkovich tx花时间研究一下。我完全理解异步与同步。我可能没有弄清楚的是urlfetch服务是否允许并发请求。通过查看日志,我可以看出urlfetch请求不是并发的。它遍历每个url,并在移动到下一个url之前等待响应。我还可以通过这样一个事实来判断,其中一个fetch调用平均需要200毫秒。Simple math说,如果同时执行,则6个此类调用最多需要200/300毫秒,而操作需要1200毫秒(
urlfetch
请求是并发的。请发布与此相矛盾的日志和代码,以便我可以查看。@komarkovich在回答中添加了工作代码。再次感谢您查看。请您编辑评论,以供社区将来参考,并提供您为使其工作所做的更多详细信息。谢谢。