Esempio n. 1
0
File: views.py Progetto: ghotiv/ztq
def stop_working_job(request):
    """停止正在进行中的转换的工作
    """
    # 获取url操作
    worker_id = request.matchdict['id']
    thread = request.matchdict['thread']
    thread_pid = request.matchdict['pid']
    # pid为-1则不能杀
    if thread_pid == -1:
        jobs = ztq_core.get_job_state(worker_id)
        task = jobs[thread]
        task['runtime']['reason'] = "manual stopped"
        task['runtime']['end'] = int(time.time())
        ztq_core.push_runtime_error(task['runtime']['queue'], task)
        del jobs[thread]
        return HTTPFound(location='/workerstatus')

    kill_command = {
        'command': 'kill',
        'timestamp': int(time.time()),
        'pid': thread_pid
    }
    cmd_queue = ztq_core.get_command_queue(worker_id)
    # 避免同时发送多条结束命令
    if cmd_queue:
        for command in cmd_queue:
            if command.get('pid', None) == kill_command['pid']:
                return HTTPFound(location='/workerstatus')
    cmd_queue.push(kill_command)

    return HTTPFound(location='/workerstatus')
Esempio n. 2
0
def stop_working_job(request):
    """停止正在进行中的转换的工作
    """
    # 获取url操作
    worker_id = request.matchdict['id']
    thread = request.matchdict['thread']
    thread_pid = request.matchdict['pid']
    # pid为-1则不能杀
    if thread_pid == '-1': 
        jobs = ztq_core.get_job_state(worker_id)
	task = jobs[thread]
        task['runtime']['reason'] = "manual stopped"
        task['runtime']['end'] = int( time.time() )
        ztq_core.push_runtime_error(task['runtime']['queue'], task)
	del jobs[thread]
        return HTTPFound(location = '/workerstatus')

    kill_command =   {
     'command':'kill',
     'timestamp':int(time.time()),
     'pid': thread_pid
     }
    cmd_queue = ztq_core.get_command_queue(worker_id)
    # 避免同时发送多条结束命令
    if cmd_queue:
        for command in cmd_queue:
            if command.get('pid', None) == kill_command['pid']:    
                return HTTPFound(location = '/workerstatus')          
    cmd_queue.push(kill_command)  

    return HTTPFound(location = '/workerstatus')
Esempio n. 3
0
    def start_job(self, task):
        self.start_job_time = int(time.time())
        task['runtime'].update({
            'worker': safe_get_host('server', 'alias'),
            'thread': self.getName(),
            'start': self.start_job_time,
        })
        # 记录当前在做什么
        task['process'] = {'ident': self.ident}
        thread_context.job = task
        try:
            self.run_task = ztq_core.task_registry[task['func']]
            # started report
            report_job(comment='start the job')

            try:
                self.run_task(*task['args'], **task['kw'])
            except TypeError:
                # keyword must string is a bug in python
                if sys.version[:5] < '2.6.5':
                    raise Exception, ("We not supported %s version of python,"
                                      "Please update it to 2.6.5 or later." %
                                      sys.version[:5])
                else:
                    raise

            if task.get('callback', None):
                callback_args = task.get('callback_args', ())
                callback_kw = task.get('callback_kw', {})
                ztq_core.push_task(task['callback'], *callback_args,
                                   **callback_kw)

        except Exception, e:
            reason = traceback.format_exception(*sys.exc_info())
            # 将错误信息记录到服务器
            return_code = str(e.args[0]) if len(e.args) > 1 else 300
            task['runtime']['return'] = return_code
            task['runtime']['reason'] = reason[-11:]
            task['runtime']['end'] = int(time.time())
            ztq_core.push_runtime_error(self.queue_name, task)
            # 错误回调
            if task.get('fcallback', None):
                callback_args = task.get('fcallback_args', ())
                callback_kw = task.get('fcallback_kw', {})
                callback_kw['return_code'] = return_code
                callback_kw['return_msg'] = reason[-1]
                ztq_core.push_task(task['fcallback'], *callback_args,
                                   **callback_kw)
            # 在终端打印错误信息
            #reason.insert(0, str(datetime.datetime.today()) + '\n')
            logger.error(''.join(reason))
Esempio n. 4
0
    def start_job(self, task):
        self.start_job_time = int(time.time())
        task['runtime'].update({'worker': safe_get_host('server', 'alias'),
                                'thread': self.getName(),
                                'start': self.start_job_time, })
        # 记录当前在做什么
        task['process'] = {'ident':self.ident}
        thread_context.job = task
        try:
            self.run_task = ztq_core.task_registry[task['func']]
            # started report
            report_job(comment='start the job')

            try:
                self.run_task(*task['args'], **task['kw'])
            except TypeError:
                # keyword must string is a bug in python
                if sys.version[:5] < '2.6.5':
                    raise Exception,("We not supported %s version of python,"
                        "Please update it to 2.6.5 or later."%sys.version[:5])
                else:
                    raise

            if task.get('callback', None):
                callback_args = task.get('callback_args', ())
                callback_kw = task.get('callback_kw', {})
                ztq_core.push_task(task['callback'], *callback_args, **callback_kw)

        except Exception, e:
            reason = traceback.format_exception(*sys.exc_info())
            # 将错误信息记录到服务器
            return_code = str(e.args[0]) if len(e.args) > 1 else 300
            task['runtime']['return'] = return_code
            task['runtime']['reason'] = reason[-11:]
            task['runtime']['end'] = int( time.time() )
            ztq_core.push_runtime_error(self.queue_name, task)
            # 错误回调
            if task.get('fcallback', None):
                callback_args = task.get('fcallback_args', ())
                callback_kw = task.get('fcallback_kw', {})
                callback_kw['return_code'] = return_code
                callback_kw['return_msg'] = reason[-1]
                ztq_core.push_task(task['fcallback'], *callback_args, **callback_kw)
            # 在终端打印错误信息
            #reason.insert(0, str(datetime.datetime.today()) + '\n')
            logger.error(''.join(reason))
Esempio n. 5
0
    def start_job(self, task):
        self.start_job_time = int(time.time())
        task['runtime'].update({'worker': CONFIG['server']['alias'],
                                'thread': self.getName(),
                                'start': self.start_job_time, })
        # 记录当前在做什么
        task['process'] = {'ident':self.ident}
        thread_context.job = task
        try:
            # started report
            report_job(comment='start the job')
            self.run_task = ztq_core.task_registry[task['func']]
            self.run_task(*task['args'], **task['kw'])

            task['runtime']['return'] = 0
            task['runtime']['reason'] = 'success'

            if task.get('callback', None):
                callback_args = task.get('callback_args', ())
                callback_kw = task.get('callback_kw', {})
                ztq_core.push_task(task['callback'], *callback_args, **callback_kw)

        except Exception, e:
            reason = traceback.format_exception(*sys.exc_info())
            # 将错误信息记录到服务器
            try:
                return_code = str(e.args[0]) if len(e.args) > 1 else 300
            except:
                return_code = 300
            task['runtime']['return'] = return_code
            task['runtime']['reason'] = reason[-11:]
            task['runtime']['end'] = int( time.time() )
            ztq_core.push_runtime_error(self.queue_name, task)
            # 错误回调
            if task.get('fcallback', None):
                callback_args = task.get('fcallback_args', ())
                callback_kw = task.get('fcallback_kw', {})
                callback_kw['return_code'] = return_code
                callback_kw['return_msg'] = unicode(reason[-1], 'utf-8', 'ignore')
                ztq_core.push_task(task['fcallback'], *callback_args, **callback_kw)
            # 在终端打印错误信息
            #reason.insert(0, str(datetime.datetime.today()) + '\n')
            logger.error(''.join(reason))
Esempio n. 6
0
    def start_job(self, task):
        self.start_job_time = int(time.time())
        task['runtime'].update({'worker': CONFIG['server']['alias'],
                                'thread': self.getName(),
                                'start': self.start_job_time, })
        # 记录当前在做什么
        task['process'] = {'ident':self.ident}
        thread_context.job = task
        try:
            # started report
            report_job(comment='start the job')
            self.run_task = ztq_core.task_registry[task['func']]
            self.run_task(*task['args'], **task['kw'])

            task['runtime']['return'] = 0
            task['runtime']['reason'] = 'success'

            if task.get('callback', None):
                callback_args = task.get('callback_args', ())
                callback_kw = task.get('callback_kw', {})
                ztq_core.push_task(task['callback'], *callback_args, **callback_kw)

        except Exception, e:
            reason = traceback.format_exception(*sys.exc_info())
            # 将错误信息记录到服务器
            try:
                return_code = str(e.args[0]) if len(e.args) > 1 else 300
            except:
                return_code = 300
            task['runtime']['return'] = return_code
            task['runtime']['reason'] = reason[-11:]
            task['runtime']['end'] = int( time.time() )
            ztq_core.push_runtime_error(self.queue_name, task)
            # 错误回调
            if task.get('fcallback', None):
                callback_args = task.get('fcallback_args', ())
                callback_kw = task.get('fcallback_kw', {})
                callback_kw['return_code'] = return_code
                callback_kw['return_msg'] = unicode(reason[-1], 'utf-8', 'ignore')
                ztq_core.push_task(task['fcallback'], *callback_args, **callback_kw)
            # 在终端打印错误信息
            #reason.insert(0, str(datetime.datetime.today()) + '\n')
            logger.error(''.join(reason))