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实现JAVA源代码从ANSI到UTF-8的批量转换方法
Aug 10 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
Jul 08 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
Jan 04 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
使用Python批量修改文件名的代码实例
Jan 24 Python
Python3数字求和的实例
Feb 19 Python
PyTorch: 梯度下降及反向传播的实例详解
Aug 20 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
Mar 10 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
新手必备Python开发环境搭建教程
May 28 Python
浅析Python中的随机采样和概率分布
Dec 06 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
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
layui实现显示数据表格、搜索和修改功能示例
2020/06/03 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
python strip()函数 介绍
2013/05/24 Python
从零学Python之入门(四)运算
2014/05/27 Python
Python守护进程(daemon)代码实例
2015/03/06 Python
Python多线程和队列操作实例
2015/06/21 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
浅析PEP570新语法: 只接受位置参数
2019/10/15 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
python os模块在系统管理中的应用
2020/06/22 Python
个人自我鉴定怎么写
2013/10/28 职场文书
清洁工表扬信
2014/01/08 职场文书
品质主管岗位职责
2014/03/16 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
退学证明范本3篇
2014/10/29 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android