def save_task(request): try: # 先获取参数 task_name = request.POST["taskName"].replace(" ", "") crontab_id = request.POST["crontab"] datasource = request.POST["datasource"] sql = request.POST["sql"] operator = request.POST["operator"] threshold = request.POST["threshold"] # 任务模板,默认先取这个 monitor_task = "monitor.tasks.monitor_sql" kwargs = dict() kwargs["name"] = task_name kwargs["datasource"] = datasource kwargs["sql"] = sql kwargs["operator"] = operator kwargs["threshold"] = int(threshold) # 编辑页面 还可以关联文章 if request.POST.has_key("article"): article = request.POST["article"] if article != "" and article is not None: kwargs["article"] = int(article) json_str = json.dumps(kwargs, ensure_ascii=False) periodic_task = PeriodicTask(name=task_name, task=monitor_task, kwargs=json_str, crontab_id=crontab_id) # 如果是编辑就加上id, if request.POST.has_key("taskId"): task_id = request.POST["taskId"] periodic_task.id = task_id if request.POST.has_key("enabled"): enabled = request.POST["enabled"] periodic_task.enabled = enabled else: periodic_task.enabled = 0 # 更新数据库 periodic_task.save() except Exception as e: print e finally: return HttpResponseRedirect("/ocean/monitor/listTask")
def save(self, **kwargs): if not self.task: task = PeriodicTask( name='{} Parser Task'.format(self.name.title())) task.task = 'parse.' + self.name.lower() task.enabled = False task.save() self.task = task models.Model.save(self, **kwargs)
def deactivate_task(uid, days=14): """ uid:user.id days: 默认两周后关闭账户 """ from djcelery.models import CrontabSchedule, PeriodicTask from django.contrib.auth.models import User import datetime now = datetime.datetime.today() deadline = now + datetime.timedelta(minutes=3) task_date = CrontabSchedule() task_date.minute = deadline.timetuple().tm_min task_date.hour = deadline.timetuple().tm_hour task_date.day_of_month = deadline.timetuple().tm_mday task_date.month_of_year = deadline.timetuple().tm_mon try: from django.db import transaction with transaction.atomic(): task_date.save() except: return False user = User.objects.get(pk=uid) name = "Deactivate_User_%s" % uid new_task = PeriodicTask(name=name) new_task.name = name new_task.task = 'templates.tasks.deactivate_tempuser' new_task.crontab = task_date new_task.args = "[%s]" % uid new_task.enabled = True try: from django.db import transaction with transaction.atomic(): new_task.save() except: return False return True