我目前有一个运行SocketIO的Flask服务器,我希望它能够一直运行python函数,直到收到Socket消息为止,这时我想停止第一个函数并启动第二个函数。
我已经尝试了几种方法来执行此操作,但是到目前为止,我最近使用的是多处理过程。我可以很好地创建/启动进程并使它保持运行状态,但是当我尝试终止该进程时却没有消息进入时,该功能将继续运行。
这里的主要思想是打印“ hanging ...”,直到收到SocketIO消息为止,此时“ hanging ...”将停止,并调用新函数。感谢所有帮助。
from flask import Flask, render_template
from flask_socketio import SocketIO, send
import time
import multiprocessing
app = Flask(__name__)
app.config['SECRET_KEY'] = 'mysecret'
socketio = SocketIO(app)
def hang():
while True:
print('hanging..')
time.sleep(1)
def nextFunction():
# something here
print('in function 2')
@socketio.on('message')
def handleMessage(msg):
if msg == 'enroll':
# Kill old process
global hangProcess
hangProcess.terminate()
hangProcess.join()
# Start next process
enrollProcess = multiprocessing.Process(target=nextFunction)
enrollProcess.start()
hangProcess = multiprocessing.Process(target=hang)
hangProcess.start()
if __name__ == '__main__':
socketio.run(app, debug=True, host='0.0.0.0')