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判断操作系统类型代码分享
Nov 22 Python
Python使用django获取用户IP地址的方法
May 11 Python
python字符串编码识别模块chardet简单应用
Jun 15 Python
python虚拟环境virtualenv的安装与使用
Sep 21 Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 Python
基于python cut和qcut的用法及区别详解
Nov 22 Python
Django多数据库配置及逆向生成model教程
Mar 28 Python
通过Python pyecharts输出保存图片代码实例
Nov 25 Python
python 用opencv实现霍夫线变换
Nov 27 Python
pandas按条件筛选数据的实现
Feb 20 Python
用python删除文件夹中的重复图片(图片去重)
May 12 Python
Python matplotlib安装以及实现简单曲线的绘制
Apr 26 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
php重定向的三种方法分享
2012/02/22 PHP
thinkphp学习笔记之多表查询
2014/07/28 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
javascript 事件绑定问题
2011/01/01 Javascript
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python简单判断序列是否为空的方法
2015/06/30 Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
2017/11/02 Python
vue.js实现输入框输入值内容实时响应变化示例
2018/07/07 Python
python2与python3共存问题的解决方法
2018/09/18 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
详解Python模块化编程与装饰器
2021/01/16 Python
部队学习十八大感言
2014/01/11 职场文书
四年级学生评语大全
2014/04/21 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
员工升职自荐信
2015/03/27 职场文书
2015安全保卫工作总结
2015/04/25 职场文书