add celery support (not use django-celery)

pull/530/head
yumaojun03 2016-08-25 19:52:03 +08:00
parent 97a2e8bb50
commit 363ddb70e2
4 changed files with 32 additions and 38 deletions

21
apps/common/celery.py Normal file
View File

@ -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'])

View File

@ -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 = [

View File

@ -0,0 +1 @@

View File

@ -1,37 +1,12 @@
from celery import Celery
from django.conf import settings
from time import sleep
app = Celery('ops', broker=settings.BROKER_URL)
from __future__ import absolute_import
from common.celery import app
import time
@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}
@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