#!/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()

最新文章

  1. NLP常用工具
  2. Android系统的五种数据存储形式(二)
  3. C++中dynamic_cas操作符的工作原理
  4. 谷歌浏览器 查看源码里的a:hover CSS样式 还有火狐的查看方式
  5. ASP.Net后台 实现先弹出对话框,再跳转到另一个网页的实现方法
  6. 三种语言(c++、as、lua)中函数的差异性
  7. 关于android:configChanges小结
  8. apache添加fastcgi支持
  9. 怎么获取Spring的ApplicationContext
  10. 基于QEMU的ARM Cortex-A9开发板Vexpress-ca9的Linux内核的编译和运行
  11. HDU 1000 A + B Problem(指针版)
  12. unity零基础开始学习做游戏(三)鼠标输入,来个虚拟摇杆怎么样?
  13. cbp2make使用
  14. 【Vue.js】加载更多—vue-infinite-scroll
  15. js计算总页数
  16. teamview修改id
  17. face_recognition 模块安装
  18. 3150luogu洛谷
  19. 手动释放和收缩tempdb
  20. 将你的Vim 打造成轻巧强大的IDE

热门文章

  1. 计算密集型和 io 密集型项目的使用场景分析和代码演示
  2. vue bus.js 使用方法
  3. 《Java练习题》习题集五
  4. VS2019 开发Django(一)------环境配置
  5. Linux Bash之正则表达式
  6. Springboot vue.js html 跨域 前后分离 shiro权限 集成代码生成器
  7. 使用CocoaPods配置iOS百度地图sdk问题记录20191024
  8. 周末DHU友谊赛(半日游)感想
  9. TDD的简单实践
  10. WPF 后台模拟界面触摸点击