win7中使用django-celery定时任务配置

时间:2021-07-05 07:49:53

1. 使用RabbitMQ 代理(broker)在客户端和工作执行者之间进行交互

http://www.rabbitmq.com/install-windows.html

安装RabbitMQ 必须先下载安装了erlang 才可以安装RabbitMQ

2.使用pip安装:

pip install kombu
pip install celery

pip install django-celery

一般选择安装了celery会一起安装其他包,不用管其他的包,celery 的版本。celery4.0开始celery beat定时需要单独安装,

celery3.x.x则不需要重新安装celery-beat,直接可以使用,

3.配置

首先在setting中导入

import djcelery

app配置中加入djcelery,

在setting 底部加入

CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
djcelery.setup_loader()
BROKER_URL = 'amqp://guest@localhost//'
BROKER_POOL_LIMIT = 0
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 28800}

4.在setting所在的目录下新建celery.py文件加入代码:

from __future__ import absolute_import

import os
from django.conf import settings
from celery import Celery

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


app = Celery('web_cgcontrol')
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))

5.setting所在的目录下,根__init__.py文件下加入:

from .celery import app as celery_app

注:如果使用mysql,那么其中的文件为:

from .celery import app as celery_app
import pymysql

pymysql.install_as_MySQLdb()

6.编写tasks.py。必须是tasks的名字:

@shared_task(track_started=True)
def get_state(url):
    state = requests.get(url, allow_redirects=False).status_code
return state

获取网页的状态码为例

使用python manage.py makemigrations,和 python manage.py migrate迁移数据库,则创建了djcelery的很多表,

添加定时任务即可定时获取网页状态码