目标
开发python预测脚本并且部署到Java应用容器中。
基础环境要求
系统:MacOS/Linux
基础软件: JDK8,Conda(Python 3.6+),MySQL (5.6)
发型包: app_runtime
可以通过如下方式下载:
wget http://download.mlsql.tech/app-runtime-1.0.0/app-runtime_2.11-1.0.0.jar
该发型包大概200M,需要点耐心。下载完后,配置下环境变量:
export APP_RUNTIME_JAR=/app-runtime_2.11-1.0.0.jar
工具
pip install Cython
pip install pyarrow==0.10.0
pip install ray==0.8.0
pip install watchdog requests click uuid sfcli pyjava
元数据库 basic_app_runtime:
CREATE TABLE `dict_store` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(256) DEFAULT NULL,
`value` text,
`dict_type` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;
它只有这一张表。basic_app_runtime 这个库名也可以随便取。
启动应用容器
创建容器目录:
sfcli create --name example_project --empty
修改config/application.yml 大致如下:
development:
datasources:
mysql:
host: 127.0.0.1
port: 3306
database: basic_app_runtime
username: xxxx
password: xxxx
initialSize: 8
disable: false
removeAbandoned: true
testWhileIdle: true
removeAbandonedTimeout: 30
maxWait: 100
filters: stat,log4j
mongodb:
disable: true
redis:
disable: true
主要是配置前面的元数据库。
现在可以启动容器了:
sfcli runtime
我们希望我们有用户权限体系,从而能够创建和管理python脚本,当然还有执行python脚本。所以这次我们会安装四个插件,他们分别是:app_runtime_with_db 操作元数据库的插件
user-system 用户权限体系插件
ar_python 执行python脚本的插件
ar_runtime_web_console 为所有插件提供统一web界面的插件。
这些插件都需要数据库表支持,我们可以将他们放在不同的数据库里也可以放在相同的。在这里,我们放在同一的数据库里,名字叫app_runtime_full, 他们对应的表在:
app_runtime_with_db https://github.com/allwefantasy/app_runtime_with_db/blob/master/db.sql
user-system https://github.com/allwefantasy/user-system/blob/master/db.sql
ar_python https://github.com/allwefantasy/ar_python/blob/master/db.sql
ar_runtime_web_console https://github.com/allwefantasy/ar_runtime_web_console/blob/master/db.sql
我们先安装插件:
sfcli plugin --add app_runtime_with_db:1.0.0 --token 9d0d1030-6ed7-4dcb-9aa8-37abf02f2191
sfcli plugin --add user-system:1.0.0 --token 9d0d1030-6ed7-4dcb-9aa8-37abf02f2191
sfcli plugin --add ar_python:1.0.0 --token 9d0d1030-6ed7-4dcb-9aa8-37abf02f2191
sfcli plugin --add ar_runtime_web_console:1.0.0 --token 9d0d1030-6ed7-4dcb-9aa8-37abf02f2191
其中token为config/application.yml下的admin_token对应的值。
因为已经安装了ar_runtime_web_console,所以我们后续可以直接使用web界面来操作了。进入地址:
http://127.0.0.1:9007/ar_runtime_web_console/
可以看到一个比较简单的页面:
我们第一步是要给插件添加数据库配置。
dbConfig可以不用管。点击 `COMMIT`后可以看到如下配置选项的生成:
按相同的方式添加ar_python, ar_runtime_web_console。结果如下:
另外很多插件会通过http请求使用user-system插件,所以我们需要添加下user-system的地址:
现在各个插件都可以正常工作了。他们都需要有用户才行。我们需要注册然后登陆一个账号来完成后续的操作。默认注册功能是被关闭的。我们开启一下:
现在可以去注册了。
我注册了一个账号jack.现在去登录:
返回生成的token表示登录成功。现在我们可以去写一段python脚本了:
系统会提示我没有权限进行这项操作。所以我需要去给jack账号授权一下(如果填写了admin_token,则会绕过一切权限):
这里,我授权给jack用户访问registerPyAction的权限。
现在我成功的创建了一段叫echo的python代码。当我去执行的时候,也会失败,我们需要将echo的执行权限赋给jack账号:
现在可以执行代码了:
通常,python脚本需要接受一些额外参数,我们可以通过`ADD PARAMS`添加一些动态参数:
这样,我们就可以正常的使用ar_python的功能了。我们发现前面的操作需要我们对接口比较熟悉。对接口熟悉的人也可以通过创建向导,然后方便其他用户使用。比如我假设我希望把第一步初始化数据库和添加proxy的两个API做成一个向导给用户使用。
创建向导:
创建向导子选项,添加数据库:
创建添加代理子选项
:
现在,返回首页,通过【Go to nav page】 进入向导页,选择一个你想要的想到:
现在,你只要按照步骤填写表单即可:
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删