mirror of https://github.com/jumpserver/jumpserver
39 lines
972 B
Python
39 lines
972 B
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
from functools import wraps
|
|
|
|
|
|
TASK_PREFIX = "TOOT"
|
|
CALLBACK_PREFIX = "COC"
|
|
|
|
|
|
def register_as_period_task(crontab=None, interval=None):
|
|
"""
|
|
:param crontab: "* * * * *"
|
|
:param interval: 60*60*60
|
|
:return:
|
|
"""
|
|
from .utils import create_or_update_celery_periodic_tasks
|
|
if crontab is None and interval is None:
|
|
raise SyntaxError("Must set crontab or interval one")
|
|
|
|
def decorate(func):
|
|
@wraps(func)
|
|
def wrapper(*args, **kwargs):
|
|
tasks = {
|
|
func.__name__: {
|
|
'task': func.__name__,
|
|
'args': args,
|
|
'kwargs': kwargs,
|
|
'interval': interval,
|
|
'crontab': crontab,
|
|
'enabled': True,
|
|
}
|
|
}
|
|
create_or_update_celery_periodic_tasks(tasks)
|
|
return func(*args, **kwargs)
|
|
return wrapper
|
|
return decorate
|
|
|
|
|