python基于json文件实现的gearman任务自动重启代码实例


Posted in Python onAugust 13, 2019

一:在gearman任务失败后,调用task_failed

def task_failed(task, *args):
  info = '\n'.join(args)
  datetime = local_datetime()
  text = '{} FAILED:\n{}\n当前响应worker已关闭\n{}\n-->【{}】'.format(task, info, datetime, task)
  print(text)
  check_frequency(task)

二:打印失败信息后,调用check_frequency检查任务5分钟内的重启次数

def check_frequency(task):
  instance = TaskReloadMonitor()
  now = time.time()
  task_info = instance.open(task.lower())
  if not task_info:
    return
  worker = task_info.get('worker')
  last_time = task_info.get('last_time')
  if not last_time:
    task_info['timer'] = 1
    task_info['last_time'] = now
    instance.write()
    task_reload(task, worker, task_info['timer'])
    return
  if int(now) - int(last_time) > 300:
    task_info['timer'] = 1
    task_info['last_time'] = now
    instance.write()
    task_reload(task, worker, task_info['timer'])
    return
  timer = task_info.get('timer')
  if not (timer + 1 > 3):
    task_info['timer'] = timer + 1
    task_info['last_time'] = now
    instance.write()
    task_reload(task, worker, task_info['timer'])

三:确认重启任务后,利用subprocess重启任务,subprocess.Popen方法可以非阻塞运行cmd命令

def task_reload(task, worker, timer):
  from coursepoints.settings import BASE_DIR
  manage = os.path.join(BASE_DIR, 'manage.py')
  datetime = local_datetime()
  command = 'python {} {}'.format(manage, worker)
  subprocess.Popen(command, shell=True)
  text = '-->task reload:{}\n-->timer:{}\n-->{}'.format(task, timer, datetime)
  print(text)

json文件读写

class TaskReloadMonitor():
  def __init__(self):
    pass
  @property
  def path(self):
    path = Path(__file__).parent.joinpath('task.json')
    return path
  def open(self, task):
    try:
      f = open(self.path, 'r', encoding='utf8')
      data = json.loads(f.read())
      f.close()
      self.task_data = data
      task_info = data.get(task)
      return task_info
    except Exception as e:
      print(e)
      return None
  def write(self):
    try:
      f = open(self.path, 'w', encoding='utf8')
      data = json.dumps(self.task_data)
      f.write(data)
      f.close()
    except Exception as e:
      print(e)

json文件内容

{
 "pptconvert": {
  "worker": "pptconvert",
  "timer": 1,
  "last_time": 1555356612.9220166
 },
 "screencapture": {
  "worker": "screencapture",
  "timer": 0
 },
 "snapscreen": {
  "worker": "snapscreen",
  "timer": 1,
  "last_time": 1555441223.166838
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现备份文件实例
Sep 16 Python
python处理PHP数组文本文件实例
Sep 18 Python
Python中用于转换字母为小写的lower()方法使用简介
May 19 Python
通过实例浅析Python对比C语言的编程思想差异
Aug 30 Python
Python中index()和seek()的用法(详解)
Apr 27 Python
python调用Delphi写的Dll代码示例
Dec 05 Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 Python
浅谈Python的list中的选取范围
Nov 12 Python
python实现多层感知器
Jan 18 Python
Python编写合并字典并实现敏感目录的小脚本
Feb 26 Python
Python文件读写w+和r+区别解析
Mar 26 Python
Python还能这么玩之用Python修改了班花的开机密码
Jun 04 Python
Python 写入训练日志文件并控制台输出解析
Aug 13 #Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 #Python
Python 使用 docopt 解析json参数文件过程讲解
Aug 13 #Python
Django项目中实现使用qq第三方登录功能
Aug 13 #Python
一篇文章搞定Python操作文件与目录
Aug 13 #Python
Python Django Cookie 简单用法解析
Aug 13 #Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 #Python
You might like
PHP获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
php与php MySQL 之间的关系
2009/07/17 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
WordPress中"无法将上传的文件移动至"错误的解决方法
2015/07/01 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
img的onload的另类用法
2008/01/10 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
jQuery 遍历map()方法详解
2016/11/04 Javascript
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
jQuery plugin animsition使用小结
2017/09/14 jQuery
JS动画实现回调地狱promise的实例代码详解
2018/11/08 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
python 捕获shell脚本的输出结果实例
2017/01/04 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
英文求职信结束语大全
2013/10/26 职场文书
外贸销售员求职的自我评价
2013/11/23 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
个人年终总结范文
2015/03/09 职场文书
导游词之香港-太平山顶
2019/10/18 职场文书
Python打包exe时各种异常处理方案总结
2021/05/18 Python
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android