не может прослушать socket.on при выполнении маршрута flask - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть следующий сценарий:

  1. Маршрут, который запускается первым и застревает на некоторое время 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...