python3 自动打印出最新版本执行的mysql2redis实例


Posted in Python onApril 09, 2020

我就废话不多说了,直接看代码吧!

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 输出 mysql2redis 命令
# __author__ = caozhi
# create_time 2018-11-12,update_time 2019-12-12
# version = 2.0

import os
import re
import sys
import time
import fcntl
import subprocess
import requests

ip = "8.8.8.8"
urlnginxA = "http://8.8.8.8:81/version"
urlnginxB = "http://8.8.8.8:82/version"
defaultversion = {"module":"nginx","ver":"v0.0.0"}

def ApplicationInstance():
  global pidfile
  pidfile = open(os.path.realpath(__file__), "r")
  try:
    fcntl.flock(pidfile, fcntl.LOCK_EX | fcntl.LOCK_NB) #创建一个排他锁,并且所被锁住其他进程不会阻塞
    #print('continue...')
  except:
    print('error', 'The script was executed many times...')
    sys.exit(1)

def getversion(url):
  try:
    nginx_response = requests.get(url, timeout=3)
    if nginx_response.status_code == 200:
      data=nginx_response.json()
    else:
      print('\033[31m 接口响应非200,请重新确认执行,默认忽略本次接口的相应 %s http_code:%s\033[0m'%(url, nginx_response.status_code))
      data = defaultversion

except Exception as e:
  print('\033[31m 接口建联失败,请重新确认,默认忽略本次接口的相应 %s \033[0m'%url)
  print(e)
  data = defaultversion

finally:
  return data

def nginx_version(data):
  version = data['ver'].split('v')[1]
  return version

if __name__ == '__main__':
  ApplicationInstance()
  nginxA_data = getversion(urlnginxA)
  nginxB_data = getversion(urllnginxB)
  print('\033[33m nginxA_version \033[0m %s'%nginxA_data)
  print('\033[33m nginxB_version \033[0m %s'%nginxB_data)

versionA = nginx_version(nginxA_data)
versionB = nginx_version(nginxB_data)
d0=re.split('\.', versionA)
d2=re.split('\.', versionB)
d0=[int(d0[i]) for i in range(len(d0))]
d2=[int(d2[i]) for i in range(len(d2))]
print()

if(d0>d2):
  print('\033[35m nginxA \033[0m这个版本大 v{}'.format(versionA))
  print('\033[36m********* ↓ 这是要执行的mysql2redis的命令 请手动执行↓ ********* \033[0m')
  print('ssh {} "curl -v http://127.0.0.1:81/mysql2redis"'.format(ip))
if(d0<d2):
  print('\033[35m nginxB \033[0m这个版本大 v{}'.format(versionB))
  print('\033[36m********* ↓ 这是要执行的mysql2redis的命令 请手动执行↓ ********* \033[0m')
  print('ssh {} "curl -v http://127.0.0.1:82/mysql2redis"'.format(ip))
if(d0==d2):
  print('\033[35m nginxA和nginxB \033[0m版本一样大 v{}'.format(versionA))
  print('\033[36m********* ↓ 这是要执行的mysql2redis的命令 请手动执行↓ ********* \033[0m')
  print('ssh {} "curl -v http://127.0.0.1:81/mysql2redis"'.format(ip))
print()

补充知识:mysql2redis中LTRIM命令没有效果,用eval命令解决

mysql2redis是一个可以在mysql中执行redis命令的第三方插件,昨天在用它调用命令LTRIM时没有效果:

redis_command_v2('LTRIM', 'UserReadingRecord1', 0, 9)

今天用eval命令试了一下,成功了,哈哈:

redis_command_v2('eval', "redis.call('ltrim', 'UserReadingRecord1', 0, 9)", '0')

以上这篇python3 自动打印出最新版本执行的mysql2redis实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中常用的各种数据库操作模块和连接实例
May 29 Python
python2.7实现FTP文件下载功能
Apr 15 Python
pandas使用get_dummies进行one-hot编码的方法
Jul 10 Python
python验证身份证信息实例代码
May 06 Python
Django ModelForm组件使用方法详解
Jul 23 Python
Pytorch中accuracy和loss的计算知识点总结
Sep 10 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
Oct 12 Python
python绘制规则网络图形实例
Dec 09 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 Python
matplotlib jupyter notebook 图像可视化 plt show操作
Apr 24 Python
django 解决扩展自带User表遇到的问题
May 14 Python
keras 获取某层输出 获取复用层的多次输出实例
May 23 Python
python实现处理mysql结果输出方式
Apr 09 #Python
python读取配置文件方式(ini、yaml、xml)
Apr 09 #Python
python数据分析工具之 matplotlib详解
Apr 09 #Python
使用python检查yaml配置文件是否符合要求
Apr 09 #Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 #Python
python实现简单学生信息管理系统
Apr 09 #Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
Apr 08 #Python
You might like
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
php循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
PHP实现Soap通讯的方法
2014/11/03 PHP
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
在javascript中创建对象的各种模式解析
2016/05/16 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
JS中用try catch对代码运行的性能影响分析
2016/12/26 Javascript
如何使用bootstrap框架 bootstrap入门必看!
2017/04/13 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
2019/05/01 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
2020/03/02 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
深入理解Django的中间件middleware
2018/03/14 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
2020/03/25 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
商得四方公司面试题(gid+)
2014/04/30 面试题
关于VPN
2012/06/10 面试题
会计师职业生涯规划范文
2014/02/18 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
平面设计专业求职信
2014/08/09 职场文书
2015年管理人员工作总结
2015/05/13 职场文书
公司员工手册范本
2015/05/14 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
详解Python中下划线的5种含义
2021/07/15 Python
python数字图像处理之图像的批量处理
2022/06/28 Python