[pyar] WSGI para Flask en Windows
Luis Andraschnik
luis.andraschnik en gmail.com
Mar Abr 3 14:31:10 -03 2018
Solución Final y Reflexiones:
Para eliminar la falla era neceario cambiar el backend de matplotlib.
Espero que le pueda servir a otros si les aparec un error
*Tcl_AsyncDelete: async handler deleted by the wrong thread*
Reflexiones finales:
1) Usar Flask con el servidor WSGI de Cherrypy en Windows es muy sencillo
2) Si les aparece el error Tcl_AsyncDelete: async handler deleted by the
wrong thread
, puede estar ocasionado por matplotlib entonces hay que colocar la
siguiente línea *matplotlib.use("agg") INMEDIATAMENTE* después de importar
matplotlib y antes de importar cualquier otro módulo de matplotlib como
bien lo dice el siguiente warning que me dejó impresionado:
$ python launcher_cherry.py
C:\Users\lims\AppData\Local\Programs\Python\Python35-32\lib\site-packages\matplotlib\__init__.py:1350:
UserWarning: This call to matplotlib.use() has no effect
because the backend has already been chosen;
matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.
3) No sé como hacían los programadores del pasado antes de existir google
4) A veces el sólo hecho de postear dispara ideas para solucionar un
problema aunque no tengas la respuesta que buscabas!
Saludos!
Luis
El 3 de abril de 2018, 13:49, Luis Andraschnik <luis.andraschnik en gmail.com>
escribió:
> Parece que el problema está en matplotlib, pero con el servidor de
> desarrollo de Flask no tengo problemas.
> Matplolib lo uso para generar gráficos que codifico en Base 64 y los
> renderizo con html, no debería generar problemas ...
>
> Mejor pruebo otro WSGI , voy a leer lo de Fast CGi
> Saludos!
>
>
>
> El 3 de abril de 2018, 13:34, Luis Andraschnik <luis.andraschnik en gmail.com
> > escribió:
>
>> Actualización de último momento: La falla ocurre aunque no haga nada
>> prohibido
>>
>> $ python launcher_cherry.py
>> [03/Apr/2018:13:30:30] ENGINE Bus STARTING
>> [03/Apr/2018:13:30:30] ENGINE Started monitor thread 'Autoreloader'.
>> [03/Apr/2018:13:30:30] ENGINE Started monitor thread '_TimeoutMonitor'.
>> [03/Apr/2018:13:30:30] ENGINE Serving on http://0.0.0.0:5000
>> [03/Apr/2018:13:30:30] ENGINE Bus STARTED
>> 127.0.0.1 - - [03/Apr/2018:13:30:33 -0300] "GET / HTTP/1.1" 200 2660 "
>> http://localhost:5000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64;
>> rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:33 -0300] "GET /static/basic.css
>> HTTP/1.1" 200 410 "http://localhost:5000/" "Mozilla/5.0 (Windows NT
>> 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:33 -0300] "GET /static/navbar.css
>> HTTP/1.1" 200 566 "http://localhost:5000/" "Mozilla/5.0 (Windows NT
>> 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:34 -0300] "GET /static/fondo.jpg
>> HTTP/1.1" 304 - "http://localhost:5000/" "Mozilla/5.0 (Windows NT 10.0;
>> Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:35 -0300] "GET /gasoil HTTP/1.1" 200
>> 11507 "http://localhost:5000/" "Mozilla/5.0 (Windows NT 10.0; Win64;
>> x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:35 -0300] "GET /static/basic.css
>> HTTP/1.1" 200 410 "http://localhost:5000/gasoil" "Mozilla/5.0 (Windows
>> NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:35 -0300] "GET /static/navbar.css
>> HTTP/1.1" 200 566 "http://localhost:5000/gasoil" "Mozilla/5.0 (Windows
>> NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:37 -0300] "POST /gasoil HTTP/1.1" 200
>> 315115 "http://localhost:5000/gasoil" "Mozilla/5.0 (Windows NT 10.0;
>> Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:40 -0300] "GET /static/basic.css
>> HTTP/1.1" 200 410 "http://localhost:5000/gasoil" "Mozilla/5.0 (Windows
>> NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:40 -0300] "GET /static/navbar.css
>> HTTP/1.1" 200 566 "http://localhost:5000/gasoil" "Mozilla/5.0 (Windows
>> NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:51 -0300] "GET /fueloil HTTP/1.1" 200
>> 4809 "http://localhost:5000/gasoil" "Mozilla/5.0 (Windows NT 10.0;
>> Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:53 -0300] "POST /fueloil HTTP/1.1" 200
>> 6252 "http://localhost:5000/fueloil" "Mozilla/5.0 (Windows NT 10.0;
>> Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:53 -0300] "GET /static/basic.css
>> HTTP/1.1" 200 410 "http://localhost:5000/fueloil" "Mozilla/5.0 (Windows
>> NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:53 -0300] "GET /static/navbar.css
>> HTTP/1.1" 200 566 "http://localhost:5000/fueloil" "Mozilla/5.0 (Windows
>> NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:54 -0300] "POST /fueloil HTTP/1.1" 200
>> 6252 "http://localhost:5000/fueloil" "Mozilla/5.0 (Windows NT 10.0;
>> Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:55 -0300] "POST /fueloil HTTP/1.1" 200
>> 6252 "http://localhost:5000/fueloil" "Mozilla/5.0 (Windows NT 10.0;
>> Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:56 -0300] "POST /fueloil HTTP/1.1" 200
>> 6252 "http://localhost:5000/fueloil" "Mozilla/5.0 (Windows NT 10.0;
>> Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:56 -0300] "POST /fueloil HTTP/1.1" 200
>> 6252 "http://localhost:5000/fueloil" "Mozilla/5.0 (Windows NT 10.0;
>> Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>> 127.0.0.1 - - [03/Apr/2018:13:30:57 -0300] "POST /fueloil HTTP/1.1" 200
>> 6252 "http://localhost:5000/fueloil" "Mozilla/5.0 (Windows NT 10.0;
>> Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>>
>> *Tcl_AsyncDelete: async handler deleted by the wrong thread*
>>
>>
>> El 3 de abril de 2018, 13:27, Luis Andraschnik <
>> luis.andraschnik en gmail.com> escribió:
>>
>>> Hola Ricardo
>>>
>>> Ya encargué una Rpi para este uso, mientras tanto quería ver que puedo
>>> hacer en Windows. Probé usar el WSGI de Cherrypy, que vuela, pero si
>>> introduzco datos que generen una operación prohibida, como logaritmos de
>>> números negativos (mi app no está muy pulida), genero un Server internal
>>> error que no puede recuperarse. Bajo linux con Gunicorn se la bancaba, así
>>> que no sé que tan estable sea Cherrypy wsgi server en Windows:
>>>
>>> *ValueError: math domain error*
>>> 127.0.0.1 - - [03/Apr/2018:13:14:45 -0300] "POST /fueloil HTTP/1.1" 500
>>> 291 "http://localhost:5000/fueloil" "Mozilla/5.0 (Windows NT 10.0;
>>> Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
>>> 127.0.0.1 - - [03/Apr/2018:13:14:48 -0300] "GET / HTTP/1.1" 200 2660 "
>>> http://localhost:5000/fueloil" "Mozilla/5.0 (Windows NT 10.0; Win64;
>>> x64; rv:59.0)
>>>
>>>
>>> *Tcl_AsyncDelete: async handler deleted by the wrong thread*
>>>
>>>
>>> Usé el siguiente script como lanzador (basado en
>>> http://fgimian.github.io/blog/2012/12/08/setting-up-a-rock-s
>>> olid-python-development-web-server/ )
>>>
>>> import cherrypy
>>>
>>> from *my_aplicacion_flask* import app
>>> from paste.translogger import TransLogger
>>>
>>>
>>> def run_server():
>>> # Enable WSGI access logging via Paste
>>> app_logged = TransLogger(app)
>>>
>>> # Mount the WSGI callable object (app) on the root directory
>>> cherrypy.tree.graft(app_logged, '/')
>>>
>>> # Set the configuration of the web server
>>> cherrypy.config.update({
>>> 'engine.autoreload_on': True,
>>> 'log.screen': True,
>>> 'server.socket_port': 5000,
>>> 'server.socket_host': '0.0.0.0'
>>> })
>>>
>>> # Start the CherryPy WSGI web server
>>> cherrypy.engine.start()
>>> cherrypy.engine.block()
>>>
>>> if __name__ == "__main__":
>>> run_server()
>>>
>>>
>>>
>>> El 3 de abril de 2018, 13:00, Ricardo Daniel Quiroga <
>>> l2radamanthys en gmail.com> escribió:
>>>
>>>> Lo que te recomiendo es no hacer deploy sobre windows vas a sufrir y
>>>> mucho, de ultima consigue una raspberry y que corra ahi. Pero bueno
>>>> si sos masoquista [1]
>>>>
>>>> [1]- https://medium.com/@bilalbayasut/deploying-python-web-app-fl
>>>> ask-in-windows-server-iis-using-fastcgi-6c1873ae0ad8
>>>>
>>>> El 3 de abril de 2018, 12:52, pedro cabrera <pedrom9632 en gmail.com>
>>>> escribió:
>>>>
>>>>> Buenos dias
>>>>>
>>>>>
>>>>> Te recomiendo Nginx, espero que te sirva para lo que necesitas
>>>>>
>>>>> El 3 de abril de 2018, 10:46, Luis Andraschnik <
>>>>> luis.andraschnik en gmail.com> escribió:
>>>>>
>>>>>> Buen día Grupo
>>>>>>
>>>>>> Quise correr una aplicación flask en Windows con Gunicorn y me enteré
>>>>>> que no funciona (ni en Cygwin). ¿Qué puedo usar como Python WSGI?
>>>>>>
>>>>>> Es para correr una app Flask en una red Local, en Windows, algo que
>>>>>> sea tan sencillo de implementar como Gunicorn y para no usar el servidor de
>>>>>> desarrollo que es muy precario para "producción".
>>>>>>
>>>>>> Muchas gracias!
>>>>>> Luis
>>>>>>
>>>>>>
>>>>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Libre
>>>>>> de virus. www.avast.com
>>>>>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>>>>> <#m_-6140250891213148714_m_1953250168677521534_m_1848759174362256851_m_-1683613568499855731_m_5998710374036844608_m_7228297523808588929_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>>>>>> Sitio web: http://www.python.org.ar/
>>>>>>
>>>>>> Para administrar la lista (o desuscribirse) entrar a
>>>>>> http://listas.python.org.ar/listinfo/pyar
>>>>>>
>>>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre
>>>>>> de Argentina - http://www.usla.org.ar
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>>>>> Sitio web: http://www.python.org.ar/
>>>>>
>>>>> Para administrar la lista (o desuscribirse) entrar a
>>>>> http://listas.python.org.ar/listinfo/pyar
>>>>>
>>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>>>> Argentina - http://www.usla.org.ar
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> Ricardo Daniel Quiroga
>>>>
>>>>
>>>> _______________________________________________
>>>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>>>> Sitio web: http://www.python.org.ar/
>>>>
>>>> Para administrar la lista (o desuscribirse) entrar a
>>>> http://listas.python.org.ar/listinfo/pyar
>>>>
>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>>> Argentina - http://www.usla.org.ar
>>>>
>>>
>>>
>>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180403/d0ba03ee/attachment-0001.html>
Más información sobre la lista de distribución pyar