GAE Standard Async Fetch не работает - PullRequest
0 голосов
/ 29 июня 2018

Я слежу за документами, и, тем не менее, похоже, что запросы по-прежнему выполняются синхронно.

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, Python 2.7

1 Ответ

0 голосов
/ 03 июля 2018

Я получил это работает, но по какой-то причине только с обратными вызовами. Также это работает только на производстве, а не на местном env. : 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...