From 97a2e8bb507f4e47242e2b84343a545ae51845da Mon Sep 17 00:00:00 2001 From: yumaojun03 <719118794@qq.com> Date: Tue, 23 Aug 2016 23:51:39 +0800 Subject: [PATCH] test add celery --- apps/jumpserver/settings.py | 3 +++ apps/ops/tasks.py | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 apps/ops/tasks.py diff --git a/apps/jumpserver/settings.py b/apps/jumpserver/settings.py index 8b69953ee..949755ffd 100644 --- a/apps/jumpserver/settings.py +++ b/apps/jumpserver/settings.py @@ -23,6 +23,8 @@ sys.path.append(os.path.dirname(BASE_DIR)) try: from config import config as env_config, env CONFIG = env_config.get(env, 'default')() + BROKER_URL = CONFIG.BROKER_URL + except ImportError: CONFIG = type('_', (), {'__getattr__': None})() @@ -55,6 +57,7 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'djcelery', ] MIDDLEWARE = [ diff --git a/apps/ops/tasks.py b/apps/ops/tasks.py new file mode 100644 index 000000000..1e08daeed --- /dev/null +++ b/apps/ops/tasks.py @@ -0,0 +1,37 @@ +from celery import Celery +from django.conf import settings +from time import sleep + +app = Celery('ops', broker=settings.BROKER_URL) + + +@app.task() +def UploadTask(message): + + # Update the state. The meta data is available in task.info dicttionary + # The meta data is useful to store relevant information to the task + # Here we are storing the upload progress in the meta. + + UploadTask.update_state(state='PROGRESS', meta={'progress': 0}) + sleep(30) + UploadTask.update_state(state='PROGRESS', meta={'progress': 30}) + sleep(30) + return message + + +def get_task_status(task_id): + + # If you have a task_id, this is how you query that task + task = UploadTask.AsyncResult(task_id) + + status = task.status + progress = 0 + + if status == u'SUCCESS': + progress = 100 + elif status == u'FAILURE': + progress = 0 + elif status == 'PROGRESS': + progress = task.info['progress'] + + return {'status': status, 'progress': progress} \ No newline at end of file