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基于Tkinter实现的记事本实例
Jun 17 Python
python2.7读取文件夹下所有文件名称及内容的方法
Feb 24 Python
python利用高阶函数实现剪枝函数
Mar 20 Python
python3实现SMTP发送邮件详细教程
Jun 19 Python
Python3.5装饰器典型案例分析
Apr 30 Python
Python3列表内置方法大全及示例代码小结
May 10 Python
详解vscode实现远程linux服务器上Python开发
Nov 10 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
Jan 07 Python
python中if嵌套命令实例讲解
Feb 25 Python
利用python调用摄像头的实例分析
Jun 07 Python
Python采集爬取京东商品信息和评论并存入MySQL
Apr 12 Python
Python TypeError: ‘float‘ object is not subscriptable错误解决
Dec 24 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 和 MySQL 基础教程(四)
2006/10/09 PHP
mysql时区问题
2008/03/26 PHP
php 输出双引号&quot;与单引号'的方法
2010/05/09 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
React中ES5与ES6写法的区别总结
2017/04/21 Javascript
react native带索引的城市列表组件的实例代码
2017/08/08 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
浅谈使用nodejs搭建web服务器的过程
2020/07/20 NodeJs
[01:00] DOTA2英雄背景故事第五期之重力引力法则谜团
2020/07/16 DOTA
详解Python中的条件判断语句
2015/05/14 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
Django app配置多个数据库代码实例
2019/12/17 Python
Python修改列表值问题解决方案
2020/03/06 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
巧用CSS3的calc()宽度计算做响应模式布局的方法
2018/03/22 HTML / CSS
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
大学生入党积极分子自我评价
2014/09/20 职场文书
股东出资证明书范例
2014/10/04 职场文书
英语复习计划
2015/01/19 职场文书
老公婚前保证书
2015/02/28 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
Python可视化学习之matplotlib内置单颜色
2022/02/24 Python