проблема бесконечности b '' при запуске сценария оболочки через flask - PullRequest
0 голосов
/ 27 апреля 2020

Впервые задайте вопрос.

Внутри файла sh. Это может запускать файлы virtualenv и Python. Файл python - это файл для глубокого изучения. Это требует времени.

Я хочу распечатать вывод файла Python в режиме реального времени на веб-странице. но когда я использовал этот код, после печати справа выводились бесконечные b '' строки.

Помогите мне.

def uploaded():
    def inner():
        proc = subprocess.Popen('./some.sh', stderr=PIPE, stdout=PIPE, shell=True, executable="/bin/bash")

        for line in iter(proc.stdout.readline,''):
            string = line.rstrip()
            print(string)
            yield string + b'<br/>\n'

        for line in iter(proc.stderr.readline,''):
            string = line.rstrip()
            print(string)
            yield string + b'<br/>\n'

    return Response(inner(), mimetype='text/html')

1 Ответ

0 голосов
/ 27 апреля 2020

Похоже, что ваши readline вызовы возвращают bytes экземпляров, но при вызове iter с двумя аргументами вы сравниваете его с пустым str экземпляром '' вместо пустого bytes экземпляр, b''. Они не равны, поэтому l oop работает вечно. Попробуйте выполнить итерацию с iter(proc.stdout.readline, b'') и iter(proc.stderr.readline, b'').

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