TarsPython介绍
TarsPython 提供了whl的安装包
以及tars2py
的工具, 方便业务开发者使用python开发Tars相关的服务.
源码编译
如果你是通过源码编译得到TarsPython, 则需要做如下步骤:
首先编译tarscpp, 注意编译tarscpp时, 必须如下:
cmake .. -DTARS_STD_SHARED_PTR=ON && make && make install
注意这里的:
TARS_STD_SHARED_PTR
必须启用再配置好python, 注意编译的whl包和当前python环境的版本匹配, 也只能运行在这个版本的python环境下
建议你用conda来管理python虚拟环境, 当然源码中其实可以使用docker来一次性编译多个linux下的python环境的whl包
编译TarsPython源码:
cmake .. && make -j4 && make install
会在当前编译目录, release/content/下得到
whl
安装包, 比如: tars-1.0.0-cp311-none-manylinux2014_x86_64.whl
安装whl包
创建自己的服务
说明:
接口逻辑都在
HelloServer.py
中, 通常你需要修改这个文件接口实现可以参考
HelloServer.py
中的test, 同步回包和异步回包方式, 注意生成代码中将同步回包方式注释了, 同步和异步方式只需要选择一种即可.你如果要添加接口, 则修改
Hello.tars
, 然后执行:tars2py Hello.tars --dir=Test
, 注意--dir
制定了生成的协议文件的位置, 你需要根据自己的服务具体情况指定添加接口并生成代码后, 自己修改
HelloServer.py
, 增加接口的实现
启动服务端
发布服务
代码开发完成后,需要将代码打包成一个单独的可执行程序,来通过tars平台发布
打包依赖 pyinstaller,需要先安装pyinstaller : pip install pyinstaller
进入工程目录
打包服务
会生成HelloServer.tgz 文件, 发布这个文件的tars平台即可, 注意模板选择: tars_python
运行
你也可以直接执行可执行程序来启动服务端,如果启动正常,则打包成功,否则需要确认python环境和pyinstaller是否正确安装 ./HelloServer --config=Test.HelloServer.config.conf
依赖
打包生成HelloServer.tgz过程中, pyinstaller会分析依赖, 将python环境以及相关依赖都打包进了HelloServer.tgz, 因此正常情况下, 服务器上不需要额外安装python, 但是pyinstaller有时候会分析不准确, 打包时缺少依赖, 这个时候你需要自己配置依赖, 请参考pyinstaller相关文档.
其他说明
python版本的服务框架, 底层使用c++来实现, 因此它具备以下特性:
原则上c++具备的能力, python版本的服务都具备;
由于python全局锁的存在, python版本程序在业务层(python层面), 即使有多个线程存在, 也是在串行执行;
关于tars框架中, 配置获取, 日志, 同步/异步rpc等特性, 请参考HelloServer.py/HelloClient.py中的实现, 如果不理解, 请参考c++语言的文档充分理解tars服务框架;
Last updated