美文网首页
django 中配置celery

django 中配置celery

作者: ___大鱼___ | 来源:发表于2019-07-05 10:26 被阅读0次
在django中当我们想要执行某一个定时任务来定时刷新一些后台结果(redis、实时更新数据)等等, 应该怎么办呢?
首先我们需要安装celerydjang_celery
pip install celery
pip install django-celery

环境

Python 3.6.6

Django 2.0

Celery 3.1.26.post2 (Cipater)
然后我们需要有一个broker来接收和发送队列消息我用的是redis

settings.py

import djcelery

djcelery.setup_loader()

INSTALLED_APPS = [
          ...
          'djcelery'
]

# celery settings
# celery中间人 redis://redis服务所在的ip地址:端口/数据库号
BROKER_URL = 'redis://:199199@localhost:6379/0'
# celery结果返回,可用于跟踪结果
CELERY_RESULT_BACKEND = 'redis://:199199@localhost:6379/0'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
# celery时区设置,使用settings中TIME_ZONE同样的时区
CELERY_TIMEZONE = TIME_ZONE
blog/blog/新建一个文件celery.py`
import os
from celery import Celery

from django.conf import settings
from celery import shared_task

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'MediaApp.settings')

# Celery的参数是你当前项目的名称
app = Celery('MediaApp')

# 这一步让你可以在django的settings.py中配置celery
app.config_from_object('django.conf:settings')

# celery会自动在你注册的app中寻找tasks.py,所以你的tasks.py必须放在各个app的目录下并且不能随意命名
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

@shared_task
def test():
    print('------')

blog/init.py

from .celery import app as celery_app

__all__ = ('celery_app', )

# 这一步会确保当Django项目运行时这个app总是被导入
然后执行 python manage.py migrate 同步数据库
往后可以自行定义定时任务 如果还不懂的话请参考我的个人博客

ZHIJINYU

相关文章

网友评论

      本文标题:django 中配置celery

      本文链接:https://www.haomeiwen.com/subject/btkshctx.html