版本:
celery:3.1.25
django-celery:3.2.2
django:1.8.16
安装celery3
1
2
|
pip
install
celery==3.1.25
pip
install
django-celery
|
celery与django结合使用的配置:
参考文档:http://docs.celeryproject.org/en/3.1/django/first-steps-with-django.html
proj/proj/settings配置:
1
2
3
4
5
6
7
8
9
10
|
INSTALLED_APPS
=
(
'django.contrib.admin'
,
'django.contrib.auth'
,
'django.contrib.contenttypes'
,
'django.contrib.sessions'
,
'django.contrib.messages'
,
'django.contrib.staticfiles'
,
'study'
,
'djcelery'
,
)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import
djcelery
djcelery.setup_loader()
BROKER_URL
=
'redis://172.16.42.128:6379'
CELERYBEAT_SCHEDULER
=
'djcelery.schedulers.DatabaseScheduler'
CELERY_RESULT_BACKEND
=
'djcelery.backends.database:DatabaseBackend'
CELERY_ACCEPT_CONTENT
=
[
'application/json'
]
CELERY_TASK_SERIALIZER
=
'json'
CELERY_RESULT_SERIALIZER
=
'json'
CELERY_TIMEZONE
=
'Asia/Shanghai'
CELERY_ENABLE_UTC
=
False
CELERYD_CONCURRENCY
=
10
CELERYD_MAX_TASKS_PER_CHILD
=
5
CELERY_SEND_EVENTS
=
True
|
proj/proj/__init__.py
1
2
3
4
5
|
from
__future__
import
absolute_import
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from
.celery
import
app as celery_app
# noqa
|
proj/proj/celery.py
注意:proj改成你自己项目的名称
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
from
__future__
import
absolute_import
import
os
from
celery
import
Celery
# set the default Django settings module for the 'celery' program.
os.environ.setdefault(
'DJANGO_SETTINGS_MODULE'
,
'proj.settings'
)
from
django.conf
import
settings
# noqa
app
=
Celery(
'proj'
)
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object(
'django.conf:settings'
)
app.autodiscover_tasks(
lambda
: settings.INSTALLED_APPS)
@app
.task(bind
=
True
)
def
debug_task(
self
):
print
(
'Request: {0!r}'
.
format
(
self
.request))
|
demoapp/tasks.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
from
__future__
import
absolute_import
from
celery
import
shared_task
@shared_task
def
add(x, y):
return
x
+
y
@shared_task
def
mul(x, y):
return
x
*
y
@shared_task
def
xsum(numbers):
return
sum
(numbers)
|
命令行启动celery
启动celerycam
1
|
python manage.py celerycam
|
启动worker
1
|
python manage.py celery worker -l info
|
启动beat
1
|
python manage.py celery beat -l info
|
本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/2069055,如需转载请自行联系原作者