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中的元类编程入门指引
Apr 15 Python
Flask数据库迁移简单介绍
Oct 24 Python
Python标准库inspect的具体使用方法
Dec 06 Python
Python实现冒泡排序的简单应用示例
Dec 11 Python
python数据封装json格式数据
Mar 04 Python
Sanic框架配置操作分析
Jul 17 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
Apr 08 Python
Python实现快速大文件比较代码解析
Sep 04 Python
浅析Python 责任链设计模式
Sep 11 Python
python与idea的集成的实现
Nov 20 Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 Python
python的变量和简单数字类型详解
Sep 15 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
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
php数组应用之比较两个时间的相减排序
2008/08/18 PHP
php 将excel导入mysql
2009/11/09 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
Laravel下生成验证码的类
2017/11/15 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
PHP 图片处理
2020/09/16 PHP
js 中 document.createEvent的用法
2010/08/29 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
js严格模式总结(分享)
2016/08/22 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
浅谈ElementUI中switch回调函数change的参数问题
2018/08/24 Javascript
angular 实现下拉列表组件的示例代码
2019/03/09 Javascript
npx create-react-app xxx创建项目报错的解决办法
2020/02/17 Javascript
在漏洞利用Python代码真的很爽
2007/08/26 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
Python的时间模块datetime详解
2017/04/17 Python
python实现列表的排序方法分享
2019/07/01 Python
Python IDE Pycharm中的快捷键列表用法
2019/08/08 Python
用pytorch的nn.Module构造简单全链接层实例
2020/01/14 Python
python实现逻辑回归的示例
2020/10/09 Python
python opencv实现图像配准与比较
2021/02/09 Python
大专生简历的自我评价
2013/11/26 职场文书
大二学生职业生涯规划书
2014/02/05 职场文书
党支部对照检查材料
2014/08/25 职场文书
中学后勤工作总结2015
2015/07/22 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python
MongoDB数据库之添删改查
2022/04/26 MongoDB
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技