У меня есть следующий сценарий:
- Маршрут, который запускается первым и застревает на некоторое время l oop, который ожидает данных, отправленных через сокет от клиента.
2. У меня есть @ socket.on (), который прослушивает данные, отправленные клиентом.
Проблема заключается в том, что когда маршрут вызывается первым и он не позволяет @ socket.on получать данные Возможно, потому что основной поток заблокирован (?) ..
Маршрут, на котором выполняется l oop, выглядит следующим образом:
@app.route('/api/get-data', methods=['POST'])
def start_fab_loop():
while(received_data is None){
// keep looping
}
// here I have more code.. I don't want to end the request until I receive the data from the socket emit
Эта часть прослушивает данные, отправленные с клиент:
@socketio.on('join')
def on_join():
send("data is send from here to the route!")
Я пытался поместить while l oop в отдельный поток и заставить поток запроса присоединиться к нему так:
thread1 = threading.Thread(target=while_loop_inside_route)
thread1.start()
threading.Thread.join(thread1)
Однако это не так тоже не работает. * Я использую flask -socketio и запускаю приложение так:
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
cors = CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'
app.config['transports'] = 'websocket'
socketio = SocketIO(app, cors_allowed_origins="*")
socketio.run(app)