前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Java应用中写Python提供预测服务实战

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

作者头像
用户2936994
发布2022-07-21 13:54:50
5370
发布2022-07-21 13:54:50
举报
文章被收录于专栏:祝威廉祝威廉

目标

开发python预测脚本并且部署到Java应用容器中。

基础环境要求

系统:MacOS/Linux

基础软件: JDK8,Conda(Python 3.6+),MySQL (5.6)

发型包: app_runtime

可以通过如下方式下载:

代码语言:javascript
复制
wget http://download.mlsql.tech/app-runtime-1.0.0/app-runtime_2.11-1.0.0.jar   

该发型包大概200M,需要点耐心。下载完后,配置下环境变量:

代码语言:javascript
复制
export APP_RUNTIME_JAR=/app-runtime_2.11-1.0.0.jar

工具

代码语言:javascript
复制
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:

代码语言:javascript
复制
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 这个库名也可以随便取。

启动应用容器

创建容器目录:

代码语言:javascript
复制
sfcli create --name example_project --empty

修改config/application.yml 大致如下:

代码语言:javascript
复制
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

主要是配置前面的元数据库。

现在可以启动容器了:

代码语言:javascript
复制
sfcli runtime

我们希望我们有用户权限体系,从而能够创建和管理python脚本,当然还有执行python脚本。所以这次我们会安装四个插件,他们分别是:

  1. app_runtime_with_db 操作元数据库的插件
  2. user-system 用户权限体系插件
  3. ar_python 执行python脚本的插件
  4. ar_runtime_web_console 为所有插件提供统一web界面的插件。

这些插件都需要数据库表支持,我们可以将他们放在不同的数据库里也可以放在相同的。在这里,我们放在同一的数据库里,名字叫app_runtime_full, 他们对应的表在:

代码语言:javascript
复制
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

我们先安装插件:

代码语言:javascript
复制
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界面来操作了。进入地址:

代码语言:javascript
复制
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】 进入向导页,选择一个你想要的想到:

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档