celery已经会使用了,那么如何在django中使用呢
还是先去看了看官方文档,要简单的使用还是很简单的。
先把django安装一下
pip install django
django-admin startproject demo
django-admin startapp simple
现在我们已经创建了一个project,并创建了一个app,现在我们的目录是这样的
--demo
|--demo
|--__init__.py
|--settings.py
|--urls.py
|--wsgi.py
|--simple
|--migrations
|--__init.py
|--admin.py
|--apps.py
|--model.py
|--test.py
|--views.py
然后我们在demo\demo目录下创建一个celery.py
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
from django.conf import settings
# 在这里是使用django的settings模块作为celery的配置模块
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'demo.settings')
app = Celery('demo')
# 在这里使用namespace是为了让celery的配置与django的配置区别开
# 比如BROKER_URL就要变成CELERY_BROKER_URL
app.config_from_object('django.conf:settings', namespace='CELERY')
# 让celery从django注册的APP中查询tasks
app.autodiscover_tasks()
好了,接下来就是在settings中配置我们的一些环境,我们只增加一个BORKER_URL
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/0'
还需要在demo/demo/__ init __.py中增加一些配置
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ('celery_app',)
这是为了在django启动时就加载我们写的celery
然后启动我们的celery
celery -A demo worker -l info -P eventlet
忘了,在simple/tasks.py中创建任务
from __future__ import absolute_import, unicode_literals
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)
注:shared_task装饰器的作用是可以让所有的app共享这个任务,比如上面的add,现在又两个app,是使用不同消息队列的,如果想要这两个app都要有这个add任务,总不能写两边吧,所以使用shared_task,只需要写一个add任务。
这就是在django中简单使用celery的步骤,并不是太难。
就这些我还看了好长时间,感觉自己好菜(来自一个菜鸟的日常吐槽)