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实现sublime3的less编译插件示例
Apr 27 Python
python编写简单爬虫资料汇总
Mar 22 Python
Python创建普通菜单示例【基于win32ui模块】
May 09 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
Jun 22 Python
Python中利用aiohttp制作异步爬虫及简单应用
Nov 29 Python
python使用zip将list转为json的方法
Dec 31 Python
Python实现操纵控制windows注册表的方法分析
May 24 Python
PyCharm搭建Spark开发环境的实现步骤
Sep 05 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
Dec 11 Python
Python面向对象封装操作案例详解 II
Jan 02 Python
python 瀑布线指标编写实例
Jun 03 Python
Python使用tkinter制作在线翻译软件
Feb 22 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 discuz 主题表和回帖表的设计
2009/03/13 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
javascript 类方法定义还是有点区别
2009/04/15 Javascript
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
JavaScript中EventLoop介绍
2018/01/22 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
python复制文件代码实现
2013/12/23 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
简述Python2与Python3的不同点
2018/01/21 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
python判断数字是否是超级素数幂
2018/09/27 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
python 如何利用argparse解析命令行参数
2020/09/11 Python
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
MySQL面试题目集锦
2016/04/14 面试题
教师实习自我鉴定
2013/12/18 职场文书
清洁工岗位职责
2015/02/13 职场文书
六一活动主持词
2015/06/30 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书
Nginx反向代理学习实例教程
2021/10/24 Servers