Хорошо. Я нашел этот ответ на форуме github.
"Вывод, скорее всего, буферизован, это означает, что вы не отправили достаточно данных в flu sh буфер хотя бы один раз. Закрытие stdin (завершением process) заставляет буфер буферизовать грипп sh, в результате чего ваше приложение получает данные. Это очень часто, обычно вы не хотите записывать каждый байт, так как это будет слишком интенсивно для ввода-вывода. "
https://github.com/extrabacon/python-shell/issues/8
Поэтому я изменил свой код app.py для кода на
import sys
import time
print("START")
sys.stdout.flush()
time.sleep(10)
print("After 10 seconds")
и теперь вывод правильный
MAIN: Script started
Message from APP: START
MAIN: 5 seconds
MAIN: 10 seconds
Message from APP: After 10 seconds
The exit code was: 0
The exit signal was: null
finished
MAIN: 15 seconds
Надеюсь Не знаю, есть ли другие лучшие решения, но с этим он работает