def task2fail(task_id): try: obj = Task.get(Task.id == task_id) obj.status = Task.STATUS_FAILED obj.save() except Task.DoesNotExist: return True
def is_alive_task(task_id, core): try: obj = Task.get(Task.id == task_id) # may be wrong if obj.status == Task.STATUS_EXCEPTION: return False if obj.status == Task.STATUS_FAILED: return False if obj.status == Task.STATUS_DONE: return False print("find possible alive task %i pid is %i" % (task_id, obj.pid) ) pid = obj.pid return core.api.os.shell.is_alive(pid) except Task.DoesNotExist: return False
def run(self): """ Run task """ # set django env to load django settings.py and get database config # os.environ.setdefault("DJANGO_SETTINGS_MODULE", "web.settings") # from django.core import management # append web module ti python path sys.path.append(os.path.join(self.core.settings.root, 'src', 'web')) from web.taskqueue.models_peewee import TaskPeewee as Task print("start working on task %s" % self.task_id) task = Task.get(Task.id == self.task_id) if task.status != Task.STATUS_PENDING: raise Exception("Incorrect status: " + task.status) # create core with settings for current task settings = None if task.settings: settings = json.loads(task.settings) start(settings) # configure logger logger = logging.getLogger() # remove all handlers logger.handlers = [] # all to output, tornado will write to db from output of this process ch = logging.StreamHandler(sys.stdout) ch.setLevel(logging.DEBUG) formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(module)s.%(funcName)s: %(message)s') logger.addHandler(ch) ch.setLevel(logging.INFO) logger.addHandler(ch) self.do_task(task, Task.LOCK) sys.exit(0)
def get_object_or_404(id): try: obj = Task.get(Task.id == id) return obj except Task.DoesNotExist: return []