91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python基于json文件如何實現gearman任務自動重啟

發布時間:2021-08-07 09:43:00 來源:億速云 閱讀:100 作者:小新 欄目:開發技術

這篇文章主要介紹了python基于json文件如何實現gearman任務自動重啟,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一:在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基于json文件如何實現gearman任務自動重啟”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贺州市| 图木舒克市| 漳平市| 喀什市| 明光市| 霍林郭勒市| 瑞昌市| 乾安县| 彰化市| 德江县| 湖南省| 祁门县| 岑巩县| 泰州市| 长宁县| 山东省| 全州县| 囊谦县| 大石桥市| 靖西县| 皮山县| 曲沃县| 亳州市| 新平| 侯马市| 宝山区| 赣榆县| 邵阳市| 治县。| 揭阳市| 商丘市| 黄石市| 广德县| 三河市| 石阡县| 涪陵区| 寿光市| 蓬安县| 旌德县| 吉木萨尔县| 龙江县|