Browse Source

add celery support (not use django-celery)

pull/530/head
yumaojun03 8 years ago
parent
commit
363ddb70e2
  1. 21
      apps/common/celery.py
  2. 3
      apps/jumpserver/settings.py
  3. 1
      apps/ops/__init__.py
  4. 49
      apps/ops/tasks.py

21
apps/common/celery.py

@ -0,0 +1,21 @@
from __future__ import absolute_import
from celery import Celery
# import traceback
# # Import project config setting
# try:
# from config import config as env_config, env
# JMS_CONF = env_config.get(env, 'default')()
# print "ok"
# except ImportError:
# traceback.print_exc()
# JMS_CONF = type('_', (), {'__getattr__': None})()
# print "false"
app = Celery('common',
broker='redis://localhost:6379/0',
backend='redis://localhost:6379/0',
include=['ops.tasks'])

3
apps/jumpserver/settings.py

@ -23,8 +23,6 @@ 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})()
@ -57,7 +55,6 @@ INSTALLED_APPS = [
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'djcelery',
]
MIDDLEWARE = [

1
apps/ops/__init__.py

@ -0,0 +1 @@

49
apps/ops/tasks.py

@ -1,37 +1,12 @@
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}
from __future__ import absolute_import
from common.celery import app
import time
@app.task
def longtime_add(x, y):
print 'long time task begins'
# sleep 5 seconds
time.sleep(5)
print 'long time task finished'
return x + y
Loading…
Cancel
Save