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中的Numpy入门教程
Apr 26 Python
用Python编写一个国际象棋AI程序
Nov 28 Python
python爬虫获取淘宝天猫商品详细参数
Jun 23 Python
python搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
解决新django中的path不能使用正则表达式的问题
Dec 18 Python
Python设计模式之组合模式原理与用法实例分析
Jan 11 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
Pycharm简单使用教程(入门小结)
Jul 04 Python
浅析使用Python搭建http服务器
Oct 27 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
Mar 10 Python
python图片合成的示例
Nov 09 Python
Pandas搭配lambda组合使用详解
Jan 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
input file获得文件根目录简单实现
2013/04/26 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
javascript 动态生成私有变量访问器
2009/12/06 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
AngularJS之页面跳转Route实例代码
2017/03/10 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
python基础知识小结之集合
2015/11/25 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
Python中Numpy mat的使用详解
2019/05/24 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
2019/08/13 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
数控加工专业毕业生自荐信
2013/09/27 职场文书
自我评价格式
2014/01/06 职场文书
聚美优品励志广告词
2014/03/14 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
教师实习自我鉴定总结
2019/08/20 职场文书
Redis三种集群模式详解
2021/10/05 Redis
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js