python如何在线程中运行flask应用程序?
如何在单独的线程中运行flask应用程序? 我可以在main中运行我的flask应用程序,但是 我需要从一个线程启动flask应用程序,当我在主线程中启动一个事件以启动线程引擎时,该线程应该正在运行 所以这个很好用python如何在线程中运行flask应用程序?,python,multithreading,flask,Python,Multithreading,Flask,如何在单独的线程中运行flask应用程序? 我可以在main中运行我的flask应用程序,但是 我需要从一个线程启动flask应用程序,当我在主线程中启动一个事件以启动线程引擎时,该线程应该正在运行 所以这个很好用 @app.route("/voice", methods=['GET', 'POST']) def voice(): ......... return str(resp) @app.route("/mainFlow", methods=['GET', 'POST']) de
@app.route("/voice", methods=['GET', 'POST'])
def voice():
.........
return str(resp)
@app.route("/mainFlow", methods=['GET', 'POST'])
def mainFlow():
"""Respond """
.......
return str(resp)
if __name__ == "__main__":
app.run(debug=True)
但我需要这样的东西
def myIVR():
print("-----------------Thrd1-myIVR --------------------")
app = Flask(__name__)
app.run(debug=True)
@app.route("/voice", methods=['GET', 'POST'])
def voice():
........
return str(resp)
@app.route("/mainFlow", methods=['GET', 'POST'])
def mainFlow():
"""Respond to """
resp = VoiceResponse()
def myTest():
print("E2Etest")
thrd1 = threading.Thread(target=myIVR, args=[])
thrd1.start()
print("trigger event")
#xyz()
################################################################
def main():
myTest()
if __name__ == '__main__':
main()
我得到这个错误
File "C:\......\AppData\Local\Programs\Python\Python37-32\lib\signal.py", line 47, in signal
handler = _signal.signal(_enum_to_int(signalnum), _enum_to_int(handler))
ValueError: signal only works in main thread
试试这个:
from flask import Flask
import threading
app = Flask(__name__)
def myIVR():
print("-----------------Thrd1-myIVR --------------------")
app = Flask(__name__)
threading.Thread(target=app.run).start()
@app.route("/voice", methods=['GET', 'POST'])
def voice():
return str(resp)
@app.route("/mainFlow", methods=['GET', 'POST'])
def mainFlow():
"""Respond to """
resp = VoiceResponse()
def myTest():
print("E2Etest")
thrd1 = threading.Thread(target=myIVR, args=[])
thrd1.start()
print("trigger event")
#xyz()
################################################################
def main():
myTest()
if __name__ == '__main__':
main()
或者使用调试模式为False的烧瓶,它将解决您的问题:
from flask import Flask
import threading
app = Flask(__name__)
def myIVR():
print("-----------------Thrd1-myIVR --------------------")
app = Flask(__name__)
app.run(debug=False)
@app.route("/voice", methods=['GET', 'POST'])
def voice():
return str(resp)
@app.route("/mainFlow", methods=['GET', 'POST'])
def mainFlow():
"""Respond to """
resp = VoiceResponse()
def myTest():
print("E2Etest")
thrd1 = threading.Thread(target=myIVR, args=[])
thrd1.start()
print("trigger event")
#xyz()
################################################################
def main():
myTest()
if __name__ == '__main__':
main()
你检查过这个链接了吗?谢谢,看起来好像有人问过它关于调试的问题,我想知道关于线程的问题。我也知道我可以在主线程中运行Flask,并且我没有使用调试。我需要在线程模式下运行。此链接是否回答您的问题?我有一个工作示例,您可以从中借鉴。是我启动线程运行烧瓶的地方。请特别注意use_reloader=False部分,它避免了很多悲伤。它很有效,Dave,非常感谢!!!!好的,如果我的答案没有帮助,我会删除它,因为你没有对它进行投票或将它标记为帮助