Python 调用 Hprose接口、Dubbo接口、Java方法
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# *************************************
# @Time : 2019/7/1
# @Author : Zhang Fan
# @Desc : Library
# @File : MyTools.py
# @Update : 2019/8/23
# *************************************
import telnetlib
import hprose
import jpype
import json
import os class MyHprose(object):
"""
===================================================================
===================== MyHprose =======================
===================================================================
"""
def __init__(self):
self.client = None
self.base_url = None def create_http_client(self, address, url):
"""
创建HTTP客户端连接
"""
self.base_url = 'http://' + address + url
print('Creating Session : %s' % self.base_url)
self.client = hprose.HproseHttpClient(self.base_url) def set_header(self, key, value):
"""
设置连接头
"""
print('Set Header : { "%s": "%s" }' % (key, value))
self.client.setHeader(key, value) def set_parameter(self, *args):
"""
设置参数值
"""
arg_list = list()
for arg in args:
if isinstance(arg, str):
try:
arg = eval(arg)
except Exception as e:
logger.error(e)
arg_list.append(arg)
print('Set Parameter : %s' % str(arg_list))
return arg_list def invoke_method(self, method, args):
"""
调用方法
"""
result = {
'type': None,
'msg': None,
'value': None
}
print('Invoke Method : method={0}, args={1}'.format(method, args))
ret = self.client.invoke(method, args)
result['type'] = ret.types
result['msg'] = ret.msg
result['value'] = ret.value
return json.dumps(result, ensure_ascii=False) class MyJpype(object):
"""
===================================================================
===================== MyJpype ========================
===================================================================
"""
def __init__(self):
pass def start_jvm(self, jvmpath, jarpath):
"""
开启java虚拟机.
"""
print('Executing : Start JVM | java -ea -Djava.class.path=JedisSerialize.jar')
jarpath = os.path.join(os.path.abspath(jarpath), "JedisSerialize.jar")
jpype.startJVM(jvmpath, "-ea", "-Djava.class.path=%s" % jarpath, convertStrings=False) def save_token_jvm(self, db, host, port, auth):
"""
调用java保存token到内存库.
"""
JDClass = jpype.JClass("com.util.SearchRedis")
jd = JDClass()
jd.saveToken(int(db), str(host), int(port), str(auth)) def get_redis_jvm(self, key, db, host, port, auth):
"""
调用java查询String类型内存库.
"""
print('Executing : Query Key[%s] From Select[%s]' % (key, db))
JDClass = jpype.JClass("com.util.SearchRedis")
jd = JDClass()
result = jd.getbit(str(key), int(db), str(host), int(port), str(auth))
try:
return eval(str(result))
except:
return json.loads(str(result)) def get_hash_redis_jvm(self, key, db, host, port, auth):
"""
调用java查询Hash类型内存库.
"""
print('Executing : Query Key[%s] From Select[%s]' % (key, db))
JDClass = jpype.JClass("com.util.SearchRedis")
jd = JDClass()
result = jd.gethashbit(str(key), int(db), str(host), int(port), str(auth))
try:
return eval(str(result))
except:
return json.loads(str(result)) def shutdown_jvm(self):
"""
关闭java虚拟机.
"""
print('Executing : Shutdown JVM')
jpype.shutdownJVM() class MyDubbo(telnetlib.Telnet):
"""
===================================================================
===================== MyDubbo =========================
===================================================================
""" def __init__(self, host=None, port=0):
# super().__init__(host, port)
super(MyDubbo, self).__init__(host, port)
self.write(b"\n") def command(self, flag, str_=""):
data = self.read_until(flag.encode())
self.write(str_.encode() + b"\n")
return data def invoke(self, service_name, method_name, arg):
command_str = "invoke {0}.{1}({2})".format(service_name, method_name, arg)
print('dubbo>:%s' % command_str)
self.command('dubbo>', command_str)
data = self.command('dubbo>', "\n")
new_data = data.decode('utf-8', errors='ignore').split('\n')[0].strip()
return json.loads(new_data) if __name__ == '__main__':
print('This is test.')
mh = MyHprose()
mj = MyJpype()
md = MyDubbo()
Python 调用 Hprose接口、Dubbo接口、Java方法的更多相关文章
- 用Python调用华为云API接口发短信
[摘要] 用Python调用华为云API接口实现发短信,当然能给调用发短信接口前提条件是通过企业实名认证,而且有一个通过审核的短信签名,话不多说,showcode #!/usr/bin/python3 ...
- 在windows下用python调用darknet的yolo接口
0,目标 本人计算机环境:windows7 64位,安装了vs2015专业版,python3.5.2,cygwin,opencv3.3,无gpu 希望实现用python调用yolo函数,实现物体检测. ...
- Unity调用Android Studio中的Java方法
1. 新建Unity项目: 2. Android Studio中新建EmptyActivity: 3. 新建安卓项目时记住最小版本号: 4. 将左侧项目文件浏览面板切换到Project项下,在本项根节 ...
- Python调用云服务器AWVS13API接口批量扫描(指哪打哪)
最近因为实习的原因,为了减少一部分的工作量,在阿里云服务器上搭建了AWVS扫描器 方便摸鱼 但是发现AWVS貌似没有批量添加的方法,作者只好把整理的URL.txt捏了又捏 手动输入是不可能手动输入的, ...
- 简单实现Python调用有道API接口(最新的)
# ''' # Created on 2018-5-26 # # @author: yaoshuangqi # ''' import urllib.request import urllib.pars ...
- Python 调用 C# dll库最简方法
1.为什么要跨平台编程?双平台编程或多平台编程,只是为提供更好开发更兼容的解决方案的一种手段,编程时服务于产品和客户的,也是因地制宜. 先安装python所需的库clr ,我这里已经安装了,可以去对应 ...
- Python——调用shell命令的三种方法
1.用os.system(cmd) 不过取不了返回值 2.用os.popen(cmd) 要得到命令的输出内容,只需再调用下read()或readlines()等 如a=os.popen(cmd ...
- arcgis python 调用工具两种两种方法
arcpy.Select_analysis("p","kk") arcpy.analysis.Select("p","kk1&qu ...
- python调用不同目录中类的终极方法
1.在需要导入别的类包中加入这两行代码 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))sys.path.a ...
随机推荐
- python学习-pandas
import pandas as pd # DataForm 二维数据# print(pd.read_excel("datas.xlsx")) # 多行数据 - 加载表单s = p ...
- 《Java知识应用》Java加密方式(MD5)详解
1. 应用 使用MD5加密 因为:因为MD5的不可逆性,也可以保证你的key 是安全的,黑客无法通过原文和密文知晓你的key. 案例: import java.math.BigInteger; imp ...
- 一起学MyBatis之入门篇(2)
概述 本文主要讲解MyBatis中类型转换的功能,其实在MyBatis中,提供了默认的数据类型之间的转换,但只是基本数据类型的转换,如果跨类型进行转换,则需要自定义转换类,如java中是boolean ...
- ChinaSys 一些心得
这周不要脸的和老板一起去了 ChinaSys,可以说整个中国搞系统最nb的一批人的学术交流了.一圈报告听下来, 有几点心得,不多,可能也没有那么深刻. 系统领域的开源框架并不多 搞系统和搞AI,搞算法 ...
- SpringBoot之【mybatisplus】代码生成器
1.概述. AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity.Mapper.Mapper XML.Service.C ...
- 富士通 DX90 S2存储分配映射盘
屁话不多说,直接开操: 1.连接存储 用pc连接到存储管理口,如192.168.1.101 登录管理账号:默认root/root 创建Volume, 点击create开始创建新的volume 按需填写 ...
- 阿里巴巴Java开发手册正确学习姿势是怎样的?刷新代码规范认知
很多人都知道,阿里巴巴在2017发布了<阿里巴巴Java开发手册>,前后推出了很多个版本,并在后续推出了与之配套的IDEA插件和书籍. 相信很多Java开发都或多或少看过这份手册,这份手册 ...
- Leetcode题解 - DFS部分简单题目代码+思路(113、114、116、117、1020、494、576、688)
这次接触到记忆化DFS,不过还需要多加练习 113. 路径总和 II - (根到叶子结点相关信息记录) """ 思路: 本题 = 根到叶子结点的路径记录 + 根到叶子结点 ...
- Java基础语法02-流程控制-if-switch-for-while
流程控制语句 顺序结构 任何编程语言中最常见的程序结构就是顺序结构.顺序结构就是程序从上到下逐行地执行,中间没有任何判断和跳转. 分支结构 if(条件表达式){ 语句体;} 执行流程 首先判断条件表达 ...
- python批量插入数据到es和读取es数据
一.插入数据 1.首先准备类似如下数据 {"_type": "type1", "_id": 1, "_index": & ...