Я запустил свой скрипт Python с перенаправлением вывода в файл с помощью |tee
Самый первый оператор печати в моем коде, который печатается при запуске программы, действительно был напечатан. После этого вообще ничего не печаталось. Я выполняю печать перед отправкой вызова REST API. Как ни странно, вызов REST API был вызван на получателе (который является сервером, работающим на той же машине), но из сценария Python ничего не было напечатано. Кроме того, код получателя получил вызов REST API на 18 секунд позже, чем я ожидал (у меня были операторы печати в коде Python, чтобы сообщить мне точную метку времени, когда произошли определенные события, которые запускают мою обработку, и эти события не могли быть отложены на целых 18 секунд). Когда я нажал Ctrl-C, чтобы завершить выполнение сценария Python, на экране появилось следующее сообщение:
Код: Выделить всё
Exception ignored in:
BrokenPipeError: [Errno 32] Broken pipe
Код является асинхронным:
Код: Выделить всё
async def main():
print('\n\n' + datetime.now().strftime('%d-%m-%Y-%H:%M:%S') + ': Started.', flush = True)
pyrogram_app = Client("session_name", api_id=config.getEnv("api_id"), api_hash=config.getEnv("api_hash"))
pyrogram_app.add_handler(MessageHandler())
await pyrogram_app.start()
await idle()
await pyrogram_app.stop()
asyncio.run(main())
За исключением начального оператора печати, ни один из других моих отпечатков не имел флеш=True. Может ли кто-нибудь помочь мне понять, почему выходные данные печати исчезли и, что более важно, почему следующие операторы, вызывающие вызов REST API, были задержаны?
Подробнее здесь:
https://stackoverflow.com/questions/784 ... r-appeared