python提供了_在Java应用中写Python提供预测服务实战

目标

开发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】 进入向导页,选择一个你想要的想到:

现在,你只要按照步骤填写表单即可:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值