<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p style="margin-top:0;margin-bottom:0">Andres, gracias por la respuesta.</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">Creo que es eso lo que esta pasando. Sabras si hay alguna manera de multiplexar 1 unica conexion WS. O tengo que establecer una conexion por cada <span style="font-family: Calibri, sans-serif; font-size: 14.6667px;">thread.<br>
nuevamente muchas gracias</span></p>
<p style="margin-top:0;margin-bottom:0"><span style="font-family: Calibri, sans-serif; font-size: 14.6667px;">saludos</span></p>
<br>
<br>
<div style="color: rgb(0, 0, 0);">
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>De:</b> pyar <pyar-bounces@python.org.ar> en nombre de Andres Riancho <andres.riancho@gmail.com><br>
<b>Enviado:</b> lunes, 15 de enero de 2018 01:46 p.m.<br>
<b>Para:</b> Python Argentina<br>
<b>Asunto:</b> Re: [pyar] AYUDA: error WebSocket usando multi threading conectando con API</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Lucas,<br>
<br>
    No vi el detalle del problema, pero algo que noto es que dos<br>
threads estan usando la misma conexion? Eso no es buena idea. Puede<br>
pasar que ambos envien cosas y que el mensaje llegue entre-cortado al<br>
server. Es decir, puede llegar a pasar que por la conexion del WS se<br>
envie:<br>
<br>
```<br>
msj 1 almsj 2 al ws ws<br>
```<br>
<br>
    Entonces el server no entiende nada y cierra la conexion.<br>
<br>
Saludos,<br>
<br>
2018-01-15 10:26 GMT-03:00 lukas lei <lukaslei@hotmail.com>:<br>
> Buenos dias.<br>
><br>
> Estoy trabajando en Python 3.6,  consumiendo un API mediante WebSocket (WS).<br>
><br>
> Tengo la siguiente situación:<br>
><br>
><br>
> Cuando abro una conexión WS y luego divido el procesamiento en 2 hilos y le<br>
> envío msj al ws, el segundo hilo me da error al recibir las respuestas.<br>
><br>
> Abajo les dejo el ejemplo y el error. Estimo que debe ser algo en el<br>
> reconocimiento entre el cliente y el srv que se rompe.<br>
><br>
><br>
> Alguien que me pueda ayudar?<br>
><br>
> desde ya muchas gracias, saludos.<br>
><br>
> Lucas<br>
><br>
><br>
> Seria algo así a modo de ejemplo:<br>
><br>
><br>
> from websocket import create_connection<br>
> import time, threading<br>
><br>
> def conecta(**datos):<br>
>     nro_ope = datos['nro_ope']<br>
>     ws = datos['ws']<br>
>     msg = datos['msg']<br>
>     print('ENTRO A ---------------' + str(nro_ope))<br>
>     print("Sending"+ str(nro_ope))<br>
>     ws.send(msg)<br>
>     print("Sent"+ str(nro_ope))<br>
>     contador = 0<br>
>     ws.settimeout(300)<br>
>     while contador < 10:<br>
>         contador += 1<br>
>         print(str(nro_ope) + "Receiving..." + str(contador))<br>
>         result =  ws.recv()<br>
>         print(str(nro_ope) + " => Received1" + str(result))<br>
><br>
> # //--- Cuerpo del scrip<br>
><br>
> ws = create_connection(url, cookie=cookie)<br>
> print("Sending")<br>
> mensaje1 = 'msj 1 al ws'<br>
> mensaje2 = 'msj 2 al ws'<br>
><br>
> hilo1 = threading.Thread(target=conecta, kwargs={'nro_ope': 1,'ws': ws,<br>
> 'msg': mensaje1},  name='hilo1')<br>
> hilo1.setDaemon(False)<br>
> hilo1.start()<br>
><br>
> time.sleep(5)<br>
><br>
> hilo2  = threading.Thread(target=conecta,kwargs={'nro_ope': 2,'ws': ws,<br>
> 'msg': mensaje2}, name='hilo2')<br>
> hilo2.setDaemon(False)<br>
> hilo2.start()<br>
><br>
> a = 1<br>
> while 1 == 1:<br>
>     a = a +1<br>
>     time.sleep(1)<br>
><br>
><br>
> ERROR:<br>
><br>
> Exception in thread hilo2:<br>
> Traceback (most recent call last):<br>
>   File "C:\Program Files\Python\Python36-32\lib\threading.py", line 916, in<br>
> _bootstrap_inner<br>
>     self.run()<br>
>   File "C:\Program Files\Python\Python36-32\lib\threading.py", line 864, in<br>
> run<br>
>     self._target(*self._args, **self._kwargs)<br>
>   File "C:/Users/user1/PycharmProjects/Desarrollo/pruebaWS_multiple.py",<br>
> line 24, in conecta<br>
>     result =  ws.recv()<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_core.py", line 293, in<br>
> recv<br>
>     opcode, data = self.recv_data()<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_core.py", line 310, in<br>
> recv_data<br>
>     opcode, frame = self.recv_data_frame(control_frame)<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_core.py", line 323, in<br>
> recv_data_frame<br>
>     frame = self.recv_frame()<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_core.py", line 357, in<br>
> recv_frame<br>
>     return self.frame_buffer.recv_frame()<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_abnf.py", line 336, in<br>
> recv_frame<br>
>     self.recv_header()<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_abnf.py", line 286, in<br>
> recv_header<br>
>     header = self.recv_strict(2)<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_abnf.py", line 371, in<br>
> recv_strict<br>
>     bytes_ = self.recv(min(16384, shortage))<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_core.py", line 427, in<br>
> _recv<br>
>     return recv(self.sock, bufsize)<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_socket.py", line 80,<br>
> in recv<br>
>     bytes_ = sock.recv(bufsize)<br>
>   File "C:\Program Files\Python\Python36-32\lib\ssl.py", line 987, in recv<br>
>     return self.read(buflen)<br>
>   File "C:\Program Files\Python\Python36-32\lib\ssl.py", line 865, in read<br>
>     return self._sslobj.read(len, buffer)<br>
>   File "C:\Program Files\Python\Python36-32\lib\ssl.py", line 627, in read<br>
>     v = self._sslobj.read(len)<br>
> ssl.SSLError: [SSL: SSLV3_ALERT_BAD_RECORD_MAC] sslv3 alert bad record mac<br>
> (_ssl.c:2178)<br>
><br>
> Exception in thread hilo1:<br>
> Traceback (most recent call last):<br>
>   File "C:\Program Files\Python\Python36-32\lib\threading.py", line 916, in<br>
> _bootstrap_inner<br>
>     self.run()<br>
>   File "C:\Program Files\Python\Python36-32\lib\threading.py", line 864, in<br>
> run<br>
>     self._target(*self._args, **self._kwargs)<br>
>   File "C:/Users/user1/PycharmProjects/Desarrollo/pruebaWS_multiple.py",<br>
> line 24, in conecta<br>
>     result =  ws.recv()<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_core.py", line 293, in<br>
> recv<br>
>     opcode, data = self.recv_data()<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_core.py", line 310, in<br>
> recv_data<br>
>     opcode, frame = self.recv_data_frame(control_frame)<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_core.py", line 323, in<br>
> recv_data_frame<br>
>     frame = self.recv_frame()<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_core.py", line 357, in<br>
> recv_frame<br>
>     return self.frame_buffer.recv_frame()<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_abnf.py", line 336, in<br>
> recv_frame<br>
>     self.recv_header()<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_abnf.py", line 286, in<br>
> recv_header<br>
>     header = self.recv_strict(2)<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_abnf.py", line 371, in<br>
> recv_strict<br>
>     bytes_ = self.recv(min(16384, shortage))<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_core.py", line 427, in<br>
> _recv<br>
>     return recv(self.sock, bufsize)<br>
>   File "C:\Program<br>
> Files\Python\Python36-32\lib\site-packages\websocket\_socket.py", line 80,<br>
> in recv<br>
>     bytes_ = sock.recv(bufsize)<br>
>   File "C:\Program Files\Python\Python36-32\lib\ssl.py", line 987, in recv<br>
>     return self.read(buflen)<br>
>   File "C:\Program Files\Python\Python36-32\lib\ssl.py", line 865, in read<br>
>     return self._sslobj.read(len, buffer)<br>
>   File "C:\Program Files\Python\Python36-32\lib\ssl.py", line 627, in read<br>
>     v = self._sslobj.read(len)<br>
> BlockingIOError: [WinError 10035] A non-blocking socket operation could not<br>
> be completed immediately<br>
><br>
><br>
><br>
><br>
> _______________________________________________<br>
> Lista de Correo de PyAr - Python Argentina - pyar@python.org.ar<br>
> Sitio web: <a href="http://www.python.org.ar/" id="LPlnk378067" previewremoved="true">
http://www.python.org.ar/</a>
<div id="LPBorder_GT_15160245031500.7865966814209298" style="margin-bottom: 20px; overflow: auto; width: 100%; text-indent: 0px;">
<table id="LPContainer_15160245031440.7744311506846295" role="presentation" cellspacing="0" style="width: 90%; background-color: rgb(255, 255, 255); position: relative; overflow: auto; padding-top: 20px; padding-bottom: 20px; margin-top: 20px; border-top: 1px dotted rgb(200, 200, 200); border-bottom: 1px dotted rgb(200, 200, 200);">
<tbody>
<tr valign="top" style="border-spacing: 0px;">
<td id="TextCell_15160245031460.26642834870127796" colspan="2" style="vertical-align: top; position: relative; padding: 0px; display: table-cell;">
<div id="LPRemovePreviewContainer_15160245031460.6019217854748151"></div>
<div id="LPTitle_15160245031460.3111825098957539" style="top: 0px; color: rgb(0, 120, 215); font-weight: 400; font-size: 21px; font-family: wf_segoe-ui_light, "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; line-height: 21px;">
<a id="LPUrlAnchor_15160245031470.9538013039320956" href="http://www.python.org.ar/" target="_blank" style="text-decoration: none;">PyAr - Python Argentina</a></div>
<div id="LPMetadata_15160245031470.7660698724452442" style="margin: 10px 0px 16px; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 14px;">
www.python.org.ar</div>
<div id="LPDescription_15160245031480.7637950293982221" style="display: block; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 20px; max-height: 100px; overflow: hidden;">
Comunidad Python Argentina. Nuestro objetivo es nuclear a los usuarios de Python. Pretendemos llegar a personas y empresas, promover el uso de Python e intercambiar ...</div>
</td>
</tr>
</tbody>
</table>
</div>
<br>
<br>
><br>
> Para administrar la lista (o desuscribirse) entrar a<br>
> <a href="http://listas.python.org.ar/listinfo/pyar" id="LPlnk559249" previewremoved="true">
http://listas.python.org.ar/listinfo/pyar</a>
<div id="LPBorder_GT_15160245031660.2623210975870509" style="margin-bottom: 20px; overflow: auto; width: 100%; text-indent: 0px;">
<table id="LPContainer_15160245031570.7367685639228976" role="presentation" cellspacing="0" style="width: 90%; background-color: rgb(255, 255, 255); position: relative; overflow: auto; padding-top: 20px; padding-bottom: 20px; margin-top: 20px; border-top: 1px dotted rgb(200, 200, 200); border-bottom: 1px dotted rgb(200, 200, 200);">
<tbody>
<tr valign="top" style="border-spacing: 0px;">
<td id="TextCell_15160245031630.19907691913805947" colspan="2" style="vertical-align: top; position: relative; padding: 0px; display: table-cell;">
<div id="LPRemovePreviewContainer_15160245031630.7863170374588955"></div>
<div id="LPTitle_15160245031630.7748284856091523" style="top: 0px; color: rgb(0, 120, 215); font-weight: 400; font-size: 21px; font-family: wf_segoe-ui_light, "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; line-height: 21px;">
<a id="LPUrlAnchor_15160245031640.775752761468365" href="http://listas.python.org.ar/listinfo/pyar" target="_blank" style="text-decoration: none;">Página de Información de pyar - listas.python.org.ar</a></div>
<div id="LPMetadata_15160245031640.5409609703056462" style="margin: 10px 0px 16px; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 14px;">
listas.python.org.ar</div>
<div id="LPDescription_15160245031650.44323640289608757" style="display: block; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 20px; max-height: 100px; overflow: hidden;">
Lista de corre del grupo PyAr - Python Argentina. Para ver envíos anteriores a la lista, puede visitar los archivos de pyar . Para buscar en el ...</div>
</td>
</tr>
</tbody>
</table>
</div>
<br>
<br>
><br>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de<br>
> Argentina - <a href="http://www.usla.org.ar" id="LPlnk30274" previewremoved="true">
http://www.usla.org.ar</a><br>
<br>
<br>
<br>
-- <br>
Andrés Riancho<br>
Project Leader at w3af - <a href="http://w3af.org/" id="LPlnk885434" previewremoved="true">
http://w3af.org/</a>
<div id="LPBorder_GT_15160245324270.009610293941727743" style="margin-bottom: 20px; overflow: auto; width: 100%; text-indent: 0px;">
<table id="LPContainer_15160245324230.47206243467357156" role="presentation" cellspacing="0" style="width: 90%; background-color: rgb(255, 255, 255); position: relative; overflow: auto; padding-top: 20px; padding-bottom: 20px; margin-top: 20px; border-top: 1px dotted rgb(200, 200, 200); border-bottom: 1px dotted rgb(200, 200, 200);">
<tbody>
<tr valign="top" style="border-spacing: 0px;">
<td id="TextCell_15160245324240.8592002736645694" colspan="2" style="vertical-align: top; position: relative; padding: 0px; display: table-cell;">
<div id="LPRemovePreviewContainer_15160245324240.7070662885363892"></div>
<div id="LPTitle_15160245324240.6579503784140206" style="top: 0px; color: rgb(0, 120, 215); font-weight: 400; font-size: 21px; font-family: wf_segoe-ui_light, "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; line-height: 21px;">
<a id="LPUrlAnchor_15160245324250.2943791712596058" href="http://w3af.org/" target="_blank" style="text-decoration: none;">w3af - Open Source Web Application Security Scanner</a></div>
<div id="LPMetadata_15160245324250.6038111552318381" style="margin: 10px 0px 16px; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 14px;">
w3af.org</div>
<div id="LPDescription_15160245324260.5666604346363966" style="display: block; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 20px; max-height: 100px; overflow: hidden;">
w3af is a Web Application Attack and Audit Framework. The project's goal is to create a framework to find and exploit web application vulnerabilities that</div>
</td>
</tr>
</tbody>
</table>
</div>
<br>
<br>
Web Application Attack and Audit Framework<br>
Twitter: @w3af<br>
GPG: 0x93C344F3<br>
_______________________________________________<br>
Lista de Correo de PyAr - Python Argentina - pyar@python.org.ar<br>
Sitio web: <a href="http://www.python.org.ar/" id="LPlnk432879" previewremoved="true">
http://www.python.org.ar/</a>
<div id="LPBorder_GT_15160245323680.38967607289287054" style="margin-bottom: 20px; overflow: auto; width: 100%; text-indent: 0px;">
<table id="LPContainer_15160245323640.5805253941003381" role="presentation" cellspacing="0" style="width: 90%; background-color: rgb(255, 255, 255); position: relative; overflow: auto; padding-top: 20px; padding-bottom: 20px; margin-top: 20px; border-top: 1px dotted rgb(200, 200, 200); border-bottom: 1px dotted rgb(200, 200, 200);">
<tbody>
<tr valign="top" style="border-spacing: 0px;">
<td id="TextCell_15160245323650.692118592816289" colspan="2" style="vertical-align: top; position: relative; padding: 0px; display: table-cell;">
<div id="LPRemovePreviewContainer_15160245323650.9577621116043933"></div>
<div id="LPTitle_15160245323650.9878007565266327" style="top: 0px; color: rgb(0, 120, 215); font-weight: 400; font-size: 21px; font-family: wf_segoe-ui_light, "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; line-height: 21px;">
<a id="LPUrlAnchor_15160245323660.3725730951067301" href="http://www.python.org.ar/" target="_blank" style="text-decoration: none;">PyAr - Python Argentina</a></div>
<div id="LPMetadata_15160245323660.596651705380594" style="margin: 10px 0px 16px; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 14px;">
www.python.org.ar</div>
<div id="LPDescription_15160245323670.6914040825581584" style="display: block; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 20px; max-height: 100px; overflow: hidden;">
Comunidad Python Argentina. Nuestro objetivo es nuclear a los usuarios de Python. Pretendemos llegar a personas y empresas, promover el uso de Python e intercambiar ...</div>
</td>
</tr>
</tbody>
</table>
</div>
<br>
<br>
<br>
Para administrar la lista (o desuscribirse) entrar a <a href="http://listas.python.org.ar/listinfo/pyar" id="LPlnk301852" previewremoved="true">
http://listas.python.org.ar/listinfo/pyar</a>
<div id="LPBorder_GT_15160245630210.5520756321138558" style="margin-bottom: 20px; overflow: auto; width: 100%; text-indent: 0px;">
<table id="LPContainer_15160245630160.03848164547355726" role="presentation" cellspacing="0" style="width: 90%; background-color: rgb(255, 255, 255); position: relative; overflow: auto; padding-top: 20px; padding-bottom: 20px; margin-top: 20px; border-top: 1px dotted rgb(200, 200, 200); border-bottom: 1px dotted rgb(200, 200, 200);">
<tbody>
<tr valign="top" style="border-spacing: 0px;">
<td id="TextCell_15160245630180.3679191781141913" colspan="2" style="vertical-align: top; position: relative; padding: 0px; display: table-cell;">
<div id="LPRemovePreviewContainer_15160245630180.4476007342933459"></div>
<div id="LPTitle_15160245630180.5362102397920641" style="top: 0px; color: rgb(0, 120, 215); font-weight: 400; font-size: 21px; font-family: wf_segoe-ui_light, "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; line-height: 21px;">
<a id="LPUrlAnchor_15160245630190.10649383119397338" href="http://listas.python.org.ar/listinfo/pyar" target="_blank" style="text-decoration: none;">Página de Información de pyar - listas.python.org.ar</a></div>
<div id="LPMetadata_15160245630190.35338710612422153" style="margin: 10px 0px 16px; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 14px;">
listas.python.org.ar</div>
<div id="LPDescription_15160245630200.9981498980061259" style="display: block; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 20px; max-height: 100px; overflow: hidden;">
Lista de corre del grupo PyAr - Python Argentina. Para ver envíos anteriores a la lista, puede visitar los archivos de pyar . Para buscar en el ...</div>
</td>
</tr>
</tbody>
</table>
</div>
<br>
<br>
<br>
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina -
<a href="http://www.usla.org.ar" id="LPlnk781040" previewremoved="true">http://www.usla.org.ar</a></div>
</span></font></div>
</div>
</div>
</body>
</html>