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显示天气预报
Mar 02 Python
使用python绘制人人网好友关系图示例
Apr 01 Python
python调用windows api锁定计算机示例
Apr 17 Python
在Python的Tornado框架中实现简单的在线代理的教程
May 02 Python
在SAE上部署Python的Django框架的一些问题汇总
May 30 Python
Python 通过URL打开图片实例详解
Jun 01 Python
python Opencv将图片转为字符画
Feb 19 Python
对Python 获取类的成员变量及临时变量的方法详解
Jan 22 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 Python
Python脚本打包成可执行文件过程解析
Oct 20 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
基于Python实现射击小游戏的制作
Apr 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
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
PHP 缓存实现代码及详细注释
2010/05/16 PHP
Google Voice 短信发送接口PHP开源版(2010.5更新)
2010/07/22 PHP
php判断访问IP的方法
2015/06/19 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
JQuery中each()的使用方法说明
2010/08/19 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
jQuery级联操作绑定事件实例
2014/09/02 Javascript
javascript 面向对象封装与继承
2014/11/27 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
node使用request请求的方法
2019/12/20 Javascript
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python isinstance判断对象类型
2008/09/06 Python
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
Python 循环终止语句的三种方法小结
2019/06/24 Python
django框架中间件原理与用法详解
2019/12/10 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
一份创业计划书范文
2014/02/08 职场文书
IT工程师岗位职责
2014/07/04 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
python在package下继续嵌套一个package
2022/04/14 Python
Spring Security动态权限的实现方法详解
2022/06/16 Java/Android