Guzzle: изменение параметров запроса в генераторе пула

У меня есть следующий код:

$generator = function() use ($headers) {
   while ($request = array_shift($this->requests)) {
      yield 'id_' . $request['id'] => new Request('GET', $request['url'], $headers);
   }
}

Однако я хотел бы добавить некоторые пользовательские параметры запроса, такие как прокси-сервер и пользовательское время ожидания. Насколько я знаю, они могут быть установлены только тогда, когда клиент действительно отправляет;

   $this->client->send($r, ['proxy' => $proxy, 'connect_timeout' => 10]);

Когда я настраиваю генератор следующим образом:

   $r = new Request('GET', $request['url'], $headers);

   yield 'id_' . $request['id'] => $this->client->send($r, ['proxy' => $proxy, 'connect_timeout' => 10]);

Код больше не работает, потому что он ожидает RequestInterface.

Так как же вместо этого установить прокси в генераторе пула? Разве это не возможно?

1 ответ

Решение

Генератор может возвращать либо RequestInterface, либо PromiseInterface.

Таким образом, вы можете выполнить "полный" запрос, просто сделайте его асинхронно, чтобы сразу получить обещание и передать его в пул.

$generator = function () use ($hreaders) {
    while ($request = array_shift($this->requests)) {
        yield 'id_' . $request['id'] => $this->client->sendAsync('GET', $request['url'], [
            // Your options here.
        ]);
    }
};
Другие вопросы по тегам