Aiomas RPC Python 3.6

Posted

技术标签:

【中文标题】Aiomas RPC Python 3.6【英文标题】: 【发布时间】:2018-02-19 13:37:52 【问题描述】:

我的目标是用不同的编程语言绑定 TCP RPC 服务器 aiomas 和客户端。 我正在设置连接,但既没有收到来自服务器的响应,也没有收到响应。 文档说:

https://media.readthedocs.org/pdf/aiomas/1.0.3/aiomas.pdf

 Page 26: - On the RPC level, it a three-tuple:
[function, [arg0, arg1, ...], kwarg0: val0, kwarg1: val1]
function is a string containing the name of an exposed functions; The type of the arguments and keyword arguments may vary depending on the function.

这个简单的服务器:

import aiomas

class Server:
    router = aiomas.rpc.Service()

    @aiomas.expose
    def ping(self, i):
        print('Ping receive data: '.format(i))
        return i


if __name__ == '__main__':
    server = aiomas.run(aiomas.rpc.start_server(
        ('127.0.0.1', 5000),
        Server())
    )
    print('Server run')
    aiomas.run(server.wait_closed())

这是我的问题 tcp 客户端

import socket
import pickle


MESS = ['ping', [1]]

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 5000))
s.settimeout(1.5)
s.send(pickle.dumps(MESS))
data = s.recv(1024)
s.close()

请告诉我有什么问题。有必要了解才能在其他语言中实现这一点。非常感谢任何提示

【问题讨论】:

【参考方案1】:

我多次阅读文档,但我不明白如何编写包的标题。结果,我发现最后一个字节是包的长度。一切正常。 这是一个示例包

data='[0, 0, ["methood", ["args"], "kwargs":"if exists"]]'

hex(len(data)) -->  0x35

b'\x00\x00\x00\x35[0, 0, ["methood", ["args"], "kwargs":"if exists"]]'

【讨论】:

以上是关于Aiomas RPC Python 3.6的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu 16.04 安装python3.6 的问题

windows下安装Python2和Python3共存

python 在内网windows环境下pip三方包

python 3.6 setup

在 conda 中将 python 从 3.5 更新到 3.6

使用conda升级到python 3.6