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 ...
随机推荐
- 表删除时 Cannot delete or update a parent row: a foreign key constraint fails 异常处理
有两张表,结构如下: t_item: t_bid: id int id int n ...
- CCF-CSP题解 201609-3 炉石传说
模拟. 注意随从的编号在\(summon\)和\(attack\)随从死亡时都可能改变. #include <bits/stdc++.h> using namespace std; str ...
- CCF-CSP题解 201803-3 URL映射
题目要求写一个简易的URL规则和URL地址匹配的程序. 说说我的思路. 将URL规则和地址都截成片段用结构体\(<type, str[]>\)存储.对于URL规则,\(type\)为0代表 ...
- python安装pymssql等包时出现microsoft visual c++ 14.0 is required问题无需下载visualcppbuildtools的解决办法
如题,在练习python安装一些包时,出现了microsoft visual c++ 14.0 is required问题.网上有很多资料:一是下载对应的.whl文件,然后pip install安装: ...
- 安卓JNI精细化讲解,让你彻底了解JNI(二):用法解析
目录 用法解析 ├── 1.JNI函数 │ ├── 1.1.extern "C" │ ├── 1.2.JNIEXPORT.JNICALL │ ├── 1.3.函数名 │ ├── 1 ...
- 监听属性watch
immediate.deep data() { return { firstName: "刘", lastName: "XX", fullName: " ...
- String 的 intern() 方法解析
一.概述 JDK7 之前和之后的版本,String 的 intern() 方法在实现上存在差异,本文的说明环境是 JDK8,会在文末说明 intern() 方法的版本差异性. intern() 方法是 ...
- Python 中国象棋源码 V1
Pygame 做的中国象棋,一直以来喜欢下象棋,写了 python 就拿来做一个试试,水平有限,电脑走法水平低,需要在下次版本中更新电脑走法,希望源码能帮助大家更好的学习 python.总共分为四个文 ...
- Hive時間函數-年份相加減
Hive時間函數-年份相加減 目前為止搜了很多资料,都没有找到Hive关于时间 年份,月份的处理信息,所以就自己想办法截取啦 本来是用了概数,一年365天去取几年前的日期,后来测试的发现不够精准,然后 ...
- Jmeter工具使用初体验
一.Jmeter组成部分 一个完整的脚本必须包含以下三项,他们都在测试计划的子选项中,我们直接在测试计划上右键选择即可 线程组 取样器 监视器 二.脚本编写 1.创建线程组 2.添加取样器 我们这里添 ...