#python #sockets #websocket #stream
Вопрос:
Я настроил веб-сокет в Python, принимающий несколько потоков данных. Он получает данные каждую минуту из нескольких потоков.
stream_urls = [stream_url1, stream_url2, etc.] async with websockets.connect(stream_urls,ping_timeout=None) as sock: while True: res = await asyncio.wait_for(sock.recv(),timeout=reply_timeout) res = json.loads(res) # code runs here on data in res
Каждый раз при получении данных выполняется код, но что произойдет, если, например, по крайней мере один раз выполнение этого кода займет больше минуты?
Например, данные получены для данных из stream_url1 в 14:05, и выполнение кода занимает 70 секунд (или даже несколько полученных потоков в общей сложности занимают более 60 секунд), затем в течение этой минуты (14:05) будет ли код выполняться для stream_url2, т. е. Будет ли все это стоять в очереди до тех пор, пока все не будет выполнено, или он просто перейдет к данным 14:06, а код не будет выполняться для данных 14:05 stream_url2?
К настоящему времени я предполагаю, что мне нужно выполнить этот код в потоке, чтобы он выполнял весь ожидаемый код для каждого stream_url каждую минуту, но в моем приложении я изначально предполагал, что в этом может не быть необходимости, так как это очень редко занимает больше минуты, поэтому большого отставания не будет.
Было бы здорово, если бы кто-нибудь мог прояснить поведение использования сокета, подобного этому, и будет ли он фактически выполнять весь код каждую минуту для всех потоков в случае, если выполнение кода займет больше минуты.