Невозможно прочитать простую полезную нагрузку, создающую HTTP-запрос через hyper :: client :: Client: ограничение черты `Body: Future` не выполнено

Я нашел Popen выше лучшим решением. Это быстро и грязно, и это работает. Для python 2.6 на машине Unix я использовал следующий

    def GetLastNLines(self, n, fileName):
    """
    Name:           Get LastNLines
    Description:        Gets last n lines using Unix tail
    Output:         returns last n lines of a file
    Keyword argument:
    n -- number of last lines to return
    filename -- Name of the file you need to tail into
    """
    p=subprocess.Popen(['tail','-n',str(n),self.__fileName], stdout=subprocess.PIPE)
    soutput,sinput=p.communicate()
    return soutput

soutput будет содержать последние n строк кода. выполнить итерацию по строке soutput line:

for line in GetLastNLines(50,'myfile.log').split('\n'):
    print line
1
задан Shepmaster 19 March 2019 в 13:15
поделиться

1 ответ

and_then должно возвращать будущее или что-то, что может быть преобразовано в будущее через черту IntoFuture . Вы возвращаете res.into_body(), который не является будущим - это на самом деле поток .

Чтобы это сработало, вам нужно преобразовать этот поток в будущее, которое представляет полностью прочитанное тело. Здесь доступно несколько вариантов:

  • res.into_body().concat2(), который объединяет все считанные байты в один буфер
  • res.into_body().collect(), который собирает все куски байтов в Vec
  • res.into_body().into_future(), который преобразуется в кортеж, содержащий первый элемент из потока и оставшуюся часть самого потока (то есть (T, Stream<Item = T>))
[1116 ] Пример этого показан в Гипер-документах .

0
ответ дан Shepmaster 19 March 2019 в 13:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: