Python多线程进程不会终止

时间:2019-03-22 17:04:10

标签: python flask socket.io python-multiprocessing

我目前有一个运行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')

0 个答案:

没有答案