django-celery

在settings.py里installed_apps里添加 djcelery

需安装django-celery

在settings末端添加

import djcelery
djcelery.setup_loader()

BROKER_URL = 'amqp://guest:guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'amqp://guest:guest@localhost:5672//'

CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']

CELERY_IMPORTS = ('hello.tasks', ) CELERY_TIMEZONE = TIME_ZONE CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' CELERY_ALWAYS_EAGER = True

新建一个app

里面新建一个tasks.py

from celery import task


@task
def add(x, y):
    return x+y


@task
def prints():
    print 'xiao'

需安装

sudo apt-get install rabbitmq-server

启动rabbitmq-server

关闭rabbitmq-server -detached

查看状态rabbitmqctl status

运行celery

python manage.py celery worker --loglevel=info

或者后台运行celery

$ nohup django-admin.py celeryd worker -B --loglevel=info --settings=settings --pythonpath=. &

celery运行定时任务

python manage.py celery beat

查看celery是否正常运行

$ ps aux | grep celery

关闭celery

ps auxww | grep 'celery worker' | awk '{print $2}' | xargs kill -9

进入Django的admin后台,进入Djcelery栏目,一共有四个选项:

  • Crontabs

在此选项中,可以创建定时执行的任务需要的定时时间。

  • Intervals

在此选项中,可以创建间隔执行的任务需要时间间隔。

  • Periodic tasks

在此选项中,创建一个相应的任务,选择任务,需要定时执行的时间或者时间间隔,并保存。

当然,还有其他一些高级的选项,可以尝试使用。

  • Tasks

  • Workers

到此,一个任务便创建成功了。不出意外,创建的任务会如期执行,当然,如果创建的没有 如期执行的,应该依次检查前面的步骤,查看celery是否在运行,创建的task是否报错等等, 一级一级排除错误。

原文地址:https://www.cnblogs.com/tuifeideyouran/p/4191511.html