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 ftp上传文件
Feb 13 Python
Python多进程同步简单实现代码
Apr 27 Python
python中sys.argv函数精简概括
Jul 08 Python
Python面向对象之继承和组合用法实例分析
Aug 27 Python
解决python打不开文件(文件不存在)的问题
Feb 18 Python
Python django框架应用中实现获取访问者ip地址示例
May 17 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
Sep 28 Python
Python 实现自动获取种子磁力链接方式
Jan 16 Python
python实现剪贴板的操作
Jul 01 Python
Python实现打乒乓小游戏
Sep 25 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
php调用KyotoTycoon简单实例
2015/04/02 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
php mysql 封装类实例代码
2016/09/18 PHP
php封装的smarty类完整实例
2016/10/19 PHP
php 浮点数比较方法详解
2017/05/05 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
JavaScript中的数据类型转换方法小结
2015/10/26 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
2016/01/13 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
微信小程序实现滴滴导航tab切换效果
2018/07/24 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
Python中isnumeric()方法的使用简介
2015/05/19 Python
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
python使用pymongo与MongoDB基本交互操作示例
2020/04/09 Python
django 模型中的计算字段实例
2020/05/19 Python
python2和python3哪个使用率高
2020/06/23 Python
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
恶意软件的定义
2014/11/12 面试题
试用期员工工作自我评价
2014/09/10 职场文书
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL