새로운 스레드에서 플라스크 서버를 열고 파이썬이 실행중인 프로그램에 대한 정보를 제공하는 파이썬 디버깅 라이브러리를 작성하고 있습니다. 디버깅중인 프로그램이 웹 서버 자체가 아니라면 제대로 작동합니다. 그러나 디버그 모드에서 실행중인 다른 플라스크 서버와 동시에 실행하려고하면 문제가 발생합니다. 두 번째 서버에 액세스하려고하면 결과가 두 서버간에 번갈아 나타납니다. 내 브라우저에서 http://localhost:5002/를 방문 할 때 하나의 파이썬 프로그램 아래 두 개의 포트에있는 두개의 쓰레드/프로세스에서 두 개의 플라스크 서버를 실행할 수 있습니까?
from flask.app import Flask
from threading import Thread
# app1 represents my debugging library
app1 = Flask('app1')
@app1.route('/')
def foo():
return '1'
Thread(target=lambda: app1.run(port=5001)).start()
# Cannot change code after here as I'm not the one writing it
app2 = Flask('app2')
@app2.route('/')
def bar():
return '2'
app2.run(debug=True, port=5002)
지금, 결과는
1
또는
2
대신 지속적으로
2
되는 수 있습니다 중 하나
다음은 예입니다.
Thread
대신 multiprocessing.Process
을 사용하면 같은 결과가 나타납니다.
어떻게 이런 일이 발생하며 어떻게 피할 수 있습니까? flask/werkzeug/WSGI를 피할 수 없는가? 나는 단순함으로 플라스크를 좋아하고 이상적으로는 그것을 계속 사용하고 싶습니다. 그렇게 할 수 없다면 동시에 사용할 수있는 다른 웹 서버를 방해하지 않을 수있는 가장 간단한 라이브러리/프레임 워크는 무엇입니까? 가능한 경우 프로세스 대신 스레드를 사용하고 싶습니다.