Я использую флеш-сервер на локальном хосте из подпроцесса. Открытый процесс.
Я хочу знать, какой порт был выделен флеш-серверу в этом процессе, не блокируя вызывающий процесс.Затем я использовал бы порт localhost: для связи с приложением фляги.
Это server.py:
# server.py
import Flask
app = Flask(__name__)
@app.route('/')
def call_method():
return 'Hello'
if __name__ == '__main__':
app.run()
Вариант 1: выводит порт на стандартный вывод, но я не могу добраться до негопрограммно.Кроме того, блокирует вызывающий процесс
process = subprocess.Popen(['python', 'server.py'])
Вариант 2: перехватывает стандартный вывод, но получает только то, что буферизовано во время запуска процесса.Это может не содержать строку, содержащую порт.Но, поскольку я передаю стандартный поток вывода, это также блокирует оболочку вызывающей стороны.
process = subprocess.Popen(['python', 'server.py'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if process.stdout:
for line in process.stdout.readline():
print(line)
Как получить порт из возвращаемого процесса, а не заблокировать вызывающий процесс?