在django中使用celery

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的步骤,并不是太难。
就这些我还看了好长时间,感觉自己好菜(来自一个菜鸟的日常吐槽)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值