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修改操作系统时间的方法
May 18 Python
在Python程序中操作MySQL的基本方法
Jul 29 Python
python结合shell查询google关键词排名的实现代码
Feb 27 Python
Python实现PS滤镜中马赛克效果示例
Jan 20 Python
mac下pycharm设置python版本的图文教程
Jun 13 Python
Python OpenCV视频截取并保存实现代码
Nov 30 Python
python列表推导式入门学习解析
Dec 02 Python
Keras 快速解决OOM超内存的问题
Jun 11 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
Oct 20 Python
给numpy.array增加维度的超简单方法
Jun 02 Python
Python道路车道线检测的实现
Jun 27 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执行速度全攻略(下)
2006/10/09 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
PHP学习笔记之一
2011/01/17 PHP
php中的一些数组排序方法分享
2012/07/20 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
jQuery点缩略图弹出层显示大图片
2015/02/13 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
BootStrap中
2016/12/10 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
python实现两张图片的像素融合
2019/02/23 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
Python 共享变量加锁、释放详解
2019/08/28 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
日本钓鱼渔具和户外用品网上商店:naturum
2016/08/07 全球购物
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
中式婚礼主持词
2014/03/13 职场文书
初中生评语大全
2014/04/24 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
2015秋季田径运动会广播稿
2015/08/19 职场文书
深入讲解Vue中父子组件通信与事件触发
2022/03/22 Vue.js