Ejemplo n.º 1
0
def stop(request, task_id=None):
    control = Control(app=app)
    control.revoke(task_id, terminate=True)
    file_obj = FileData.objects.get(task_id=task_id)
    file_obj.status = 'Canceled'
    file_obj.save()
    return Response({'success': True}, status=200)
Ejemplo n.º 2
0
 def cancel_celery_task(self, kill=False):
     """
     Make sure we cancel the task (if in queue/scheduled).
     :param: kill Also kill the task if it's running, defaults to False.
     """
     celery_control = Control(current_app)
     celery_control.revoke(task_id=self.celery_task_id, terminate=kill)
Ejemplo n.º 3
0
def revoke_p_task(pr_id):
    """
    中止指定流程所有taskid:name=faconstor.tasks.exec_process的最新任务中止
    return status{bool}: 1 成功 2 失败 0 任务不存在
    """
    status = 0
    try:
        task_url = "http://127.0.0.1:5555/api/tasks"

        try:
            task_json_info = requests.get(task_url).text
        except:
            status = 2
        else:
            task_dict_info = json.loads(task_json_info)
            c_control = Control(app=app)

            for key, value in task_dict_info.items():
                try:
                    task_process_id = value["args"][1:-1].split(',')[0][1:-1]
                except:
                    task_process_id = ""
                # 终止指定流程的异步任务
                if task_process_id == pr_id and value[
                        "name"] == "drm.tasks.run_workflow":
                    task_id = key
                    print(key)
                    c_control.revoke(str(task_id), terminate=True)
                    status = 1
    except Exception as e:
        print(e)
        status = 2
    return status
Ejemplo n.º 4
0
def stop_process():
    try:
        global do_process
        if do_process:
            print('终止任务')
            ctrl = Control(app=app)
            ctrl.revoke(str(do_process.id), terminate=True)
            do_process = None
    except Exception as e:
        logger.error(e)
Ejemplo n.º 5
0
def stop_calibrate():
    try:
        global calibrate_process
        print(calibrate_process)
        if calibrate_process:
            print('终止任务')
            ctrl = Control(app=app)
            ctrl.revoke(str(calibrate_process.id), terminate=True)
            calibrate_process = None
    except Exception as e:
        logger.error(e)
Ejemplo n.º 6
0
Archivo: celery.py Proyecto: abasbh/uob
def task_e(tid):
    control = Control(app)     
    inspect = control.inspect()
    if True:
        active = inspect.active()
        running_jobs = []
        if active != None:
            for key, value in active.items():
                running_jobs.extend(value)
            if len(running_jobs) == 1:
                control.revoke(tid,terminate=True)
                print 'revoke ', tid
Ejemplo n.º 7
0
def revoke_p_task(pr_id):
    """
    中止指定流程所有taskid:name=faconstor.tasks.exec_process的最新任务中止
    return status{bool}: 1 成功 2 失败 0 任务不存在
    """
    status = 0
    try:
        task_url = "http://127.0.0.1:5555/api/tasks"

        try:
            task_json_info = requests.get(task_url).text
        except:
            status = 2
        else:
            task_dict_info = json.loads(task_json_info)
            c_control = Control(app=app)

            for key, value in task_dict_info.items():
                try:
                    task_process_id = int(value["args"][1:-1])
                except:
                    task_process_id = ""
                # 终止指定流程的异步任务
                if task_process_id == pr_id and value["name"] == "faconstor.tasks.exec_process":
                    task_id = key
                    print(key)
                    c_control.revoke(str(task_id), terminate=True)
                    status = 1
    except Exception as e:
        print(e)
        status = 2
    if status == 1:  # 修改processrun.walkthoughstate
        try:
            ProcessRun.objects.filter(id=pr_id).update(**{
                "walkthroughstate": "STOP"
            })
        except:
            pass
    return status
Ejemplo n.º 8
0
Archivo: celery.py Proyecto: abasbh/uob
def clear_twitter():
    control = Control(app)
    #control.cancel_consumer('streamapi') # queue name, must probably be specified once per queue, but my app uses a single queue
     
    inspect = control.inspect()
    if True:
        active = inspect.active()
        print active
        running_jobs = []
        if active != None:
            for key, value in active.items():
                running_jobs.extend(value)
            if len(running_jobs) > 0:
                print("{} jobs running: {}".format(len(running_jobs), ", ".join(job["name"] for job in running_jobs)))
                for job in running_jobs:
                    #if job['name'] == 'fetch':
                    control.revoke(job["id"],terminate=True)
                discard_all()
                #time.sleep(10)
            else:
                print("No running jobs")
         
        
    app2 = state.State()
    cont = Control()
    i = Inspect()
    query = app2.tasks_by_type('fetch')
    print 'query ' ,query

    for uuid, task in query:
        #cont.revoke(uuid, terminate=True)
        print uuid, task

    #cont.purge() 
    a = discard_all() 
    print a
Ejemplo n.º 9
0
from celery.result import AsyncResult

# 获取app队列信息
queue_info = app.connection().channel().queue_declare('proj', passive=True)
print('message count:', queue_info.message_count)
# 清空队列
app.connection().channel().queue_purge('proj')

result = add.delay(4, 4)
# 获取task id
print("task id: ", str(result.id))
# 获取task对象
task = AsyncResult(str(result.id))
# 获取task状态,进入开始执行状态
time.sleep(1)
print("task status: ", task.status)

celery_control = Control(app=app)
# 属于强制终止,后台会有报错信息
celery_control.revoke(str(result.id), terminate=True, signal='SIGKILL')
# 进入任务撤销状态
time.sleep(1)
print("task done: ", task.status)

# # 同步阻塞等待结果
# print("result: ", result.get(timeout=1))

# 参数签名
s1 = mul.s(2, 2)
res = s1.delay()
print("signature result: ", res.get())
Ejemplo n.º 10
0
def tasksrevoke(task_id):
    inspecter = Control(celery)
    inspecter.revoke(task_id, terminate=True)
    return jsonify({}), 202, {'terminated':True}
Ejemplo n.º 11
0
            try:
                client = pymongo.MongoClient(port=self.mongod_port)
                client.server_info()
                break
            except:
                print("Mongo d not online yet")


# mm = MongoManager()
# mm.start()
# mm.wait_for_mongo_online()

print("Everythinh started. Waiting for task finishing")
ans = tasks.hello.delay()
import time
print("Waiting 5 seconds before revoking")
time.sleep(5)

celery_control = Control(tasks.app)
celery_control.revoke(ans.id, terminate=True, signal=signal.SIGHUP)
revoke(ans.id, terminate=True, signal=signal.SIGHUP)
tasks.app.control.revoke(ans.id, terminate=True, signal=signal.SIGHUP)
ans.revoke(terminate=True, signal=signal.SIGHUP)
tasks.app.control.revoke(ans.id, terminate=True, signal='SIGKILL')
AsyncResult(ans.id, app=tasks.app).revoke(terminate=True, signal='SIGKILL')
ans.revoke(terminate=True, signal='SIGKILL')
print("Revoked function")
print(ans.get())

# mm.kill()