Django-如何写好一个celery定时任务

1.首先在项目同名目录下建一个celery.py

from __future__ import absolute_import
import os
from celery import Celery
from datetime import timedelta
from kombu import Queue

# set the default Django settings module for the ‘celery‘ program.
os.environ.setdefault(‘DJANGO_SETTINGS_MODULE‘, ‘OpsManage.settings‘)
from django.conf import settings

app = Celery(‘OpsManage‘)

# Using a string here means the worker will not have to
# pickle the object when using Windows.
# 配置celery
class Config:
    BROKER_URL = ‘amqp://guest:[email protected]:5672//‘
    CELERY_RESULT_BACKEND = ‘redis://localhost:6379‘
    CELERY_ACCEPT_CONTENT = [‘application/json‘]
    CELERY_TASK_SERIALIZER = ‘json‘
    CELERY_RESULT_SERIALIZER = ‘json‘
    CELERY_TASK_RESULT_EXPIRES = 60 * 60
    CELERY_TIMEZONE = ‘Asia/Shanghai‘
    CELERY_ENABLE_UTC = True
    CELERY_ANNOTATIONS = {‘*‘: {‘rate_limit‘: ‘500/s‘}}
    CELERYBEAT_SCHEDULER = ‘djcelery.schedulers.DatabaseScheduler‘

app.config_from_object(Config)
# 到各个APP里自动发现tasks.py文件
app.autodiscover_tasks()
#crontab config
app.conf.update(
    CELERYBEAT_SCHEDULE = {
        # 每隔30s执行一次函数
        ‘every-30-min-add‘: {
            ‘task‘: ‘apps.tasks.celery_assets.push_host_by_salt_tasks‘,
            ‘schedule‘: timedelta(seconds=30)
            # # 每天凌晨12点
            # ‘schedule‘: crontab(minute=0, hour=0)
        },
    },
)
# kombu : Celery 自带的用来收发消息的库, 提供了符合 Python 语言习惯的, 使用 AMQP 协议的高级接口
Queue(‘transient‘, routing_key=‘transient‘,delivery_mode=1)

2.在settings.py里配置celery

INSTALLED_APPS = [
    ......
    ‘django_celery_beat‘,
    ‘django_celery_results‘,
]

3.在项目同名目录下的__init__.py文件里申明celery任务,记得要去检测呀

# coding:utf-8
from __future__ import absolute_import, unicode_literals

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from celery import app as celery_app

__all__ = [‘celery_app‘]

import pymysql
pymysql.install_as_MySQLdb()

4.在task.py里执行任务的函数上加@

from celery import task

# 定时任务
@task
def push_host_by_salt_tasks():
    “”“balabala”“”
    return ‘这里是定时任务‘

原文地址:https://www.cnblogs.com/lutt/p/12037661.html

时间: 2024-08-30 16:47:45

Django-如何写好一个celery定时任务的相关文章

利用django admin后台配置celery定时任务

1.安装djcelery pip install django-celery 2.在Django项目setting配置 A.配置djcelery # CELERY STUFF import djcelery djcelery.setup_loader() BROKER_URL = 'redis://localhost:6379' CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' # 定时任务 CELERY_RESULT_

将celery定时任务设置为根据本地时区触发

默认celery的时区为UTC,如果要在django项目中将celery定时任务配置为根据本地时区触发,则需要修改 在setttings.py 添加以下任意一行: # celery 相关配置 CELERY_TIMEZONE = 'Asia/Shanghai' CELERY_ENABLE_UTC = False 原文地址:https://www.cnblogs.com/linyihai/p/10140936.html

celery 定时任务

1 基本概念 使用 Celery 实现定时任务的步骤: (1) 创建一个 Celery 实例 (2) 配置文件中配置任务 ,发布任务 celery A xxx beat (3) 启动 Celery Worker (4) 存储结果 使用 Celery 实现异步任务的步骤: (1) 创建一个 Celery 实例 (2) 启动 Celery Worker ,通过delay() 或 apply_async()(delay 方法封装了 apply_async, apply_async支持更多的参数 ) 将

django项目中遇到要实现定时任务

django项目中遇到要实现定时任务,所以选用了简单易用的django-crontab插件. 1.安装 django-crontab pip install django-crontab 2.定时要执行的脚本 先写个简单的测试脚本. ipoms/crons.py import datetime def update_stock_status(): start_time = datetime.datetime.now() print start_time, ", begin update_stoc

Celery定时任务细讲

Celery定时任务细讲 一.目录结构 任务所在目录 ├── celery_task # celery包 如果celery_task只是建了普通文件夹__init__可以没有,如果是包一定要有 │ ├── __init__.py # 包文件 看情况要不要存在 │ ├── celery.py # celery连接和配置相关文件,且名字必须交celery.py,其实也不是必须的不然你指令可能要修改 │ └── tasks.py # 所有任务函数 二.配置 celery.py from celery

新写了一个控制器,结果粗心导致出现了一个问题纠结了半天

新写了一个控制器,结果粗心导致出现了一个问题纠结了半天     误信息如下: 经过逐步排查发现时因为我的方法中用了一个Model ,却把Model的包引入错误所以造成上面的问题: 错误引入的包为:import com.sun.tools.xjc.model.Model; 正确的包为: import org.springframework.ui.Model;

写出一个缓存系统的伪代码001

/** * 写出一个缓存系统的伪代码 * @author ysloong * */ public class CacheDemo { private Map<String, Object> map = new HashMap<String, Object>(); public static void main(String[] args) { // TODO Auto-generated method stub } public synchronized Object getDat

浮动布局写了一个简单的页面

正在学习的路上...... 这两天写了一个比较简单的页面,主要使用了浮动和定位.左边的属于滚动页面,右边的list属于固定.先上图片: 主要使用了float:left/right. 1.下面是HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <link type="

wg_pagenation 1.0 自己写的一个分页插件_基于Jquery

前言: 现在这个分页插件也不少,感觉缺点什么,所以自己就写了一个,喜欢的人就拿去用......有bug和建议可以回复,我有空就修改和答复..... 感谢我的基友,刘总...他主要给本插件写配套主题css; 特点: 整合ajax可以异步和后台交互数据,定制化选项多.和Jquery的pagenation比较类似,但是功能更多,选择性更多. 当前版本:1.0 完成日期:20150815 效果图: White.css的效果图: default.css效果图: 上图上向下的箭头表示的是每一个可选择和更改的