예제 #1
0
파일: views.py 프로젝트: kong2030/python
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")
예제 #2
0
파일: models.py 프로젝트: hrmy/hoROOMy
 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)
예제 #3
0
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