В настоящее время у меня есть сервер Flask, работающий с SocketIO, и я хочу, чтобы функция python постоянно работала до получения сообщения Socket, после чего я хочу остановить первую функцию и запустить вторую.
Я пробовал несколько способов сделать это, но самый близкий, который я дошел до сих пор, это использование многопроцессорной обработки. Я могу нормально создать / запустить процесс и оставить его работающим, но когда я пытаюсь завершить процесс, когда приходит сообщение, ничего не происходит - функция продолжает работать.
Основная идея заключается в том, что он должен печатать «висит ...», пока не получит сообщение SocketIO, в какой момент «зависание ...» прекратится и будет вызвана новая функция. Вся помощь приветствуется.
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')