脚本定时 kill 某用户在 4040 上 Running 状态的 sql 任务

  其他常见问题
内容纲要

概要描述

本文介绍如何通过脚本和实现后台 kill 4040页面上,某用户的所有 running 的任务。


详细说明

思路描述

由于Inceptor没有相关后台命令,所以只能通过模拟页面请求来实现。主要技术难点为模拟登录4040页面、获取任务的Job ID。

适用环境

TDH版本

任意TDH版本。

Python版本

Python 2.7。

示例代码

#!/usr/bin python

inceptor_server_host = "172.22.22.1"
guardian_token = "Bf1h3BzC6GimC8cK9Cxv-TDH"
username = "tableau"
password = "tableau"

import urllib
import urllib2
import json
import cookielib

def get_jobs(ip, token):
    url = r'http://%s:4040/api/jobs?guardian_access_token=%s' % (ip, token)
    request = urllib2.Request(url)
    response = urllib2.urlopen(request)
    #print response.read()

    content = json.loads(response.read())
    jobs = []

    for t in content:
        if t["status"] == "running":
            jobs.append(t)

    print 'Get %s running jobs.' % len(jobs)
    return jobs

def kill_job(jobId, ip, token, username, password):
    print '\nKILL JOB ID=%s ...' % jobId
    url = r'http://%s:4040/jobs' % ip
    cookie = cookielib.CookieJar()
    handler = urllib2.HTTPCookieProcessor(cookie)
    opener = urllib2.build_opener(handler)
    response = opener.open(url)
    #print response.read()
    text = response.read()
    #print text
    execution = text.split('

脚本配置

示例代码的前面几行为配置项,根据实际情况进行配置。

inceptor_server_host = "172.22.22.1"
guardian_token = "Bf1h3BzC6GimC8cK9Cxv-TDH"
username = "tableau"
password = "tableau"

inceptor_server_host配置为Inceptor Server的IP地址。
guardian_token配置为用户的Guardian Access Token。
username配置为用户名称。
password配置为用户密码。

运行效果

将示例代码保存到文件kill_all_jobs.py后,使用如下命令执行脚本。

python kill_all_jobs.py

执行效果如下。

file

脚本会杀死所有该用户下正在运行的Job。

定时调度

编辑文件/etc/crontab,增加该脚本的定时任务即可实现定时调度,定期kill所有4040页面上在跑的任务。

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。