腾讯云服务器实现Java客户端远程调用Linux服务器深度模型(Python)(上)
转载请注明出处:https://blog.csdn.net/qq_33427047/article/details/80393363
RPC(Remote Procedure Call, 远程过程调用)
- 主要实现了Java client调用python server( 深度学习模型, 如 Parlai )
主要的步骤为:
- 使用Java调用Python服务器RPC, 用来远程启动深度学习模型
- 修改模型输入输出格式为: 通过socket实现client-server通信
参考Python与Java之间Socket通信 - 实现client: Java多线程
服务器采用腾讯云服务器: 完成电脑和服务器的SOCKET通信
使用Java调用Python服务器RPC
- 通过使用xmlrpc机制,让python程序和java程序之间RPC通信交互
- 配置java开发环境:
- 下载jar包: apache-xmlrpc-3.1.3-bin.tar.gz
无法下载试试度盘: 链接: https://pan.baidu.com/s/1Y1e3Zh90PHuKKMSckUuWMA 密码: afi8 - 解压得到5个jar包
- 在Java工程中添加jar包: 右键工程 -> 选择properties -> Java Build Path -> Libraries -> add External JARs…
- 具体的作用和用法可以参考它的官方API文档:http://ws.apache.org/xmlrpc/apidocs/index.html
- 下载jar包: apache-xmlrpc-3.1.3-bin.tar.gz
Python建立RPC服务器或客户端的通用库:
# -*- coding:utf-8 -*-# server.pyfrom SimpleXMLRPCServer import SimpleXMLRPCServer from SocketServer import ThreadingMixIn from xmlrpclib import ServerProxy import thread import os import sysclass ThreadXMLRPCServer(ThreadingMixIn, SimpleXMLRPCServer):pass class RPCServer():def __init__(self, ip='127.0.0.1', port='8000'):self.ip = ipself.port = int(port)self.svr = Nonedef start(self, func_lst):thread.start_new_thread(self.service, (func_lst, 0,))def resume_service(self, v1, v2):self.svr.serve_forever(poll_interval=0.001)def service(self, func_lst, v1):self.svr = ThreadXMLRPCServer((self.ip, self.port), allow_none=True)for func in func_lst:self.svr.register_function(func)self.svr.serve_forever(poll_interval=0.001)def activate(self):thread.start_new_thread(self.resume_service, (
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
