2011-06-20 24 views
5

Gần đây, tôi đã xem qua khuôn khổ pyjamas. Nó khuyến khích cách tiếp cận phát triển ứng dụng web hoàn toàn khác nhau bằng cách tách toàn bộ thành phần 'view' của 'MVC' thành một số html + javascript (được tạo bằng python biên dịch), thay vì sử dụng template truyền thống. Phía máy khách 'xem' này được cho là giao tiếp với máy chủ thông qua các yêu cầu HTTP không đồng bộ và khung đề xuất sử dụng 'jsonrpc' làm giao thức truyền thông.Thư viện jsonrpc tương thích dựa trên python dựa trên WSGI nào để sử dụng ở phía máy chủ cho 'pajamas'?

Trong tài liệu của họ, họ đã sử dụng thành phần jsonrpc dựa trên django. Nhưng tôi chủ yếu được sử dụng cho các giải pháp đơn giản và ngu ngốc như bottle framework. Theo như tôi hiểu, tôi thậm chí không cần tất cả các thành phần của microframeworks như vậy. Một máy chủ tương thích với WSGI, một số phần mềm trung gian định tuyến + phiên và trình xử lý yêu cầu hiểu về mặt jsonrpc sẽ làm tốt. Tôi đang tìm kiếm một giải pháp trọng lượng nhẹ dễ sử dụng cho phần cuối cùng - có sẵn trình xử lý yêu cầu nhận biết jsonrpc có sẵn mà cắm độc đáo trong môi trường WSGI. Là của họ?

Vui lòng tha thứ và sửa lỗi lạm dụng/hiểu nhầm các điều khoản của tôi, nếu có.

Trả lời

1

Bạn có thể đã chọn một số thư viện ngay bây giờ. Nhưng dù sao.

Tôi sử dụng bình và và jsonrpc2. Đây là một số mã psudo. Mã của tôi rất giống nhau.

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

Thật sự tôi chuyển sang một số dự án khác. Dù sao, nó là tốt đẹp để biết làm thế nào bạn làm điều đó. Cảm ơn một lần nữa. – Titon

+0

Chắc chắn. Tôi đã mong đợi điều đó. Câu trả lời này là nhiều hơn vì lợi ích của các nhà phát triển, những người tìm kiếm đưa họ đến trang này :-). – 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] 
Các vấn đề liên quan