2011-02-22 17 views
5

Tengo una aplicación cherrypy existente, pero quiero saber si es posible ejecutarla en el servidor gevent wsgi. Me imagino que puedo, pero no tengo acceso a un servidor de Linux para probar gevent y no he podido ejecutarlo en mi mac.ejecutando la aplicación cherrypy en el servidor gevent wsgi

Tengo la impresión de que esto es posible ya que cada lado sigue las especificaciones de wsgi.

¿Alguien ha intentado esto?

supongo que un ejemplo sería el siguiente aspecto:

import cherrypy 
from gevent import wsgi 

class Root(object): 
    def index(self): 
     return "hi!" 
    index.exposed = True 

app = cherrypy.tree.mount(Root(), '/') 
wsgi.WSGIServer(('', 8088), app).serve_forever() 

Respuesta

2

Ese ejemplo trabaja muy bien. Estoy seguro de que #gevent en freenode lo ayudará con cualquier problema de instalación.

+0

Sí Confirmé que debido a que el cerezo y los objetos de la aplicación contienen una _callable_ que todo debería funcionar como se espera ... Comprobaré también el freenode para una plataforma de prueba remota. ¡Aclamaciones! – deecodameeko

3

¡Este ejemplo funcionará hasta que encuentre el interruptor de greenlet dentro de los manipuladores de cherrypy! De modo que esto fallará si usa gevent para la comunicación asincrónica dentro de los manejadores.

cherrypy utiliza objeto global para almacenar los encabezados de respuesta y en el interior se encuentra dentro de cherrypy/__ init__.py:~350:

# Create request and response object (the same objects will be used 
# throughout the entire life of the webserver, but will redirect 
# to the "serving" object) 
request = _ThreadLocalProxy('request') 
response = _ThreadLocalProxy('response') 

Si hace una pausa uno interruptores de petición y GEvent a procesamiento siguiente se sobrescribirá el contenido de larga duración encabezado en el objeto global y se enfrentarán errores extraños en el lado del cliente.

+0

De hecho. Alguien debería reemplazar el objeto threadlocal "serving" con un greenlet local si quieren usar greenlets. – fumanchu

Cuestiones relacionadas