2011-06-20 10 views
5

Recientemente, me encontré con pyjamas framework. Fomenta un enfoque de desarrollo de aplicaciones web radicalmente diferente al separar todo el componente 'vista' de 'MVC' en algún html + javascript (generado con python compilado), en lugar de usar plantillas tradicionales. Se supone que esta 'vista' del lado del cliente se comunica con el servidor a través de Solicitudes HTTP Asíncronas, y el marco recomienda usar 'jsonrpc' como protocolo de comunicación.¿Qué biblioteca de jsonrpc compatible con WSGI basada en python simple usar en el lado del servidor para 'pijamas'?

En su documentación, utilizaron un componente jsonrpc basado en django. Pero estoy acostumbrado a soluciones simples y estúpidas como bottle framework. Por lo que yo entiendo, ni siquiera necesito todos los componentes de tales microframeworks. Un servidor compatible con WSGI, algún enrutamiento + middleware de sesión y un manejador de solicitudes que comprenda en términos de jsonrpc funcionará perfectamente. Estoy buscando una solución liviana y fácil de usar para la última parte, el controlador de solicitudes jsonrpc-aware, fácilmente disponible, que se conecta muy bien en el entorno WSGI. Es su cualquiera?

Disculpe y corrija el uso indebido o la falta de comprensión de los términos, en su caso.

Respuesta

1

Es posible que haya elegido una biblioteca por ahora. Pero de cualquier manera.

Uso el matraz yy jsonrpc2. Aquí hay un código de psudo. Mi código es muy similar.

import jsonrpc2 

mapper = jsonrpc2.JsonRpc() 
mapper['echo'] = str 

@app.route('/rpc', methods=['GET', 'POST']) 
def rpc(): 
    #req {"jsonrpc": "2.0", "method": methodname, "params": params, "id": 1} 
    data = mapper(request.json) 
    return jsonify(data) 
+0

En realidad pasé a algún otro proyecto. De todos modos, es bueno saber cómo lo haces. Gracias de nuevo. – Titon

+0

Claro. Esperaba eso. Esta respuesta es más beneficiosa para los desarrolladores, cuya búsqueda les lleva a esta página :-). – Shekhar

1

https://github.com/dengzhp/simple-jsonrpc

import jsonrpc 

def add(a, b): 
    return a + b 

def default(*arg, **kwargs): 
    return "hello jsonrpc" 

class MyJsonrpcHandler(jsonrpc.JsonrpcHandler): 
    """define your own dispatcher here""" 
    def dispatch(self, method_name): 
     if method_name == "add": 
      return add 
     else: 
      return default 


def application(environ, start_response): 
    # assert environ["REQUEST_METHOD"] = "POST" 
    content_length = int(environ["CONTENT_LENGTH"]) 

    # create a handler 
    h = MyJsonrpcHandler() 

    # fetch the request body 
    request = environ["wsgi.input"].read(content_length) 

    # pass the request body to handle() method 
    result = h.handle(request) 

    #log 
    environ["wsgi.errors"].write("request: '%s' | response: '%s'\n" % (request, result)) 

    start_response("200 OK", []) 
    return [result] 
Cuestiones relacionadas