任务目的
提供一个可以调用的url接口,网址中带着需要输入信息,服务器的虚拟机中运行着程序,会在网页的界面中返回输出结果。(可以达到核心算法保密的目的)
准备工具
- 服务器
- 服务器中运行的虚拟机
- 虚拟机中存在python3的环境(2可能也行,没试过)
- 服务器中有nginx程序
步骤
1、虚拟机中运行python程序
import tornado.ioloop
import tornado.web
import joblib
import numpy as np
from allPre import * #核心算法
class MainHandler(tornado.web.RequestHandler):
global tf_model #定义全局变量,可加速算法的运行速度
tf_model = final_main()
def get(self):
"""get请求"""
a = self.get_argument('a')
print(a)
text = [a]
text_enbedding =tf_model.transform(text)
out = fit_and_predicted(text_enbedding)
if out[0] == '0':
outcome = '负'
if out[0] == '1':
outcome = '正'
self.write("分类结果:" + outcome)
application = tornado.web.Application([(r"/add", MainHandler), ])
if __name__ == "__main__":
application.listen(8868)
tornado.ioloop.IOLoop.instance().start()
这时,通过访问本地ip加上端口号8868,即可得到想要的界面
例如:
2、在服务器中搭建nginx连接虚拟机中的端口
upstream sum{
server ***.**.**.***:****; #虚拟机运行python程序中访问网页的ip地址和端口号
}
# sumsung
server {
listen *; #服务器开放的端口
server_name ***.**.**.**; #服务器地址
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_pass http://sum;#代理,转发到集群;
}
}
基本上需要修改的就是*的地方,这里注意,
- 服务器和虚拟机的网络连接需要设置为桥接网络
- 服务器端口一定要是开放的
3、访问结果
通过更改上述图片的服务器的地址和开放的端口号即可实时访问该网址。