Keep Simple RPC
MIT License
Keep Simple RPC。免注册远程过程调用
团队里常常需要通过平台下载各数据,但只有一套账号。通常的方案如下:
如果搭建一套服务,客户端不需账号,基本不用改动代码,是否解决多成员分享问题?所以这个项目就是为了API转发,只是后来发现本质上是RPC
ksrpc
库pip install ksrpc[server] -i https://mirrors.aliyun.com/pypi/simple --upgrade
python -m ksrpc
, 观察提示的config.py
文件路径config.py
文件,进行ksrpy
的功能管理。如权限配置等ENABLE_SERVER = True
python -m ksrpc
或对应目录下运行python run_app.py
ksrpc
库pip install ksrpc[client] -i https://mirrors.aliyun.com/pypi/simple --upgrade
examples
目录下的demo_http.py
和demo_websocket.py
中对应的服务地址demo_http.py
和demo_websocket.py
,检查是否运行正常tests
目录下的:os、numpy、pandas、akshare等
server
目录下的,jqdatasdk、tushare、WindPy等hack
目录下的jqdatasdk、WindPy等
from ksrpc import RpcClient
from ksrpc.connections.http import HttpxConnection
conn = HttpxConnection('http://127.0.0.1:8000/api/file')
conn.timeout = None
math = RpcClient('math', conn, async_local=False)
math.cache_get = True
math.cache_expire = 86400
# 模块中变量获取方法。加了括号
print(math.pi())
print(math.pow(2, 3))
# 创建客户连接
from ksrpc import RpcClient
from ksrpc.connections.http import HttpxConnection
conn = HttpxConnection('http://127.0.0.1:8000/api/file')
conn.timeout = None
client = RpcClient('tushare', conn, async_local=False)
client.cache_get = True
client.cache_expire = 86400
# 对原版库进行定制处理,需要已经安装了原版库
from ksrpc.hack.tushare import hack
hack(client)
# 原版代码可都保持不变
import tushare as ts
ts.set_token('TUSHARE_TOKEN')
pro = ts.pro_api()
df = pro.trade_cal(exchange='', start_date='20210901', end_date='20211231')
print(df)
df = pro.daily(ts_code='000001.SZ,600000.SH', start_date='20180701', end_date='20180718')
print(df)
跨语言示例代码在lang
目录下
跨语言开发文档
此库仅供学习交流,请在数据提供方的授权范围内使用。请勿向第三方转发数据
如果提供服务的机器在内网,无法搭建服务,也无法直接访问怎么办?参考Reverse Shell的概念,本项目提供了Reverse RPC功能
pip install ksrpc[server]
,修改配置,运行python run_app.py
,记下公网IPpip install ksrpc
(如果网络受限,可下载whl文件本地安装),修改rpc_reverse.py
中为公网IP,运行python rpc_reverse.py
。此代码可粘贴到Notebook中运行pip install ksrpc[client]
,编辑examples/demo_reverse.py
中为公网IP,运行,观察结果/client
, 个人电脑连接公网IP下的/admin
,并且要用完全一样的房间号config.py
中的ENABLE_RELAY = True
已经开启开发到一定阶段后才发现与rpyc
这个免注册暴露函数的功能类似,大家也可以去学习一下
https://github.com/tomerfiliba-org/rpyc