window 64在django 中使用 python3.5 + celery

本文介绍在Windows环境下如何配置Celery实现定时任务,并详细列出配置步骤与关键代码示例,包括设置环境、配置Celery及Redis等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前有个需求   需要提前缓存一些数据,那么使用celery  

找个各种方法,显示在celery 不支持celery   下面分享我的配置  与启动办法  -------主干还是celery官网

也有很多异步循环的配置,这里只写不同的地方。


第一  环境:  win64  + python3.5 + celery+ 3.1.25 + django-celery  + redis + django

第二   根据官网配置

1. setting  

2. 项目同名路径下添加初始化文件  celery.py  在项目中

3. 配置在项目同名目录下的init.py

4. 在apps目录下,或者其他目录下添加 task.py 文件(这个可以自己命名,只是为了更好的见名思意建议使用task)

5. 配置view

在Windows下  主要不同在于task.py 中的配置  

rom __future__ import absolute_import
from celery import Celery
# 导入redis模块,通过python操作redis
import redis
import django_redis
import pymysql
import simplejson
# 创建celery客户端
# 参数一  指定任务所在的路径,从包名开始制定
# 参数二  指定任务队列(broker),这里使用的reids
app = Celery('tasks', broker='redis://localhost:6379')


app.conf.update(
   #  配置所在时区
    CELERY_TIMEZONE='Asia/Shanghai',
    CELERY_ENABLE_UTC=True,
    #  官网推荐消息序列化方式为json
    CELERY_ACCEPT_CONTENT=['json'],
    CELERY_TASK_SERIALIZER='json',
    CELERY_RESULT_SERIALIZER='json',

   # 配置定时任务
    CELERYBEAT_SCHEDULE={
        'inster': {
            'task': 'celery_tasks.tasks.inster',  # tasks.py模块下的add方法
            'schedule': 5,      # 每隔5运行一次
             'args': (1, )
        }
    }
)
@app.task
def inster(tp):
    print("1111111111111111111111111111111111111111111111111")
    # 链接数据库
    db = pymysql.connect(host="localhost", user="root", passwd="mysql", db="insauditdata", charset='utf8')
    cursor = db.cursor()

    # 链接redis池
    pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
    r = redis.Redis(connection_pool=pool)
    if tp == 1:
        cursor.execute(
            "select rt_bps, avg_bps from t_mem_net_flow order by interface_id")
        results = cursor.fetchall()       # 每查询一条数据返回一个元祖,装入大的元祖中


然后是配置views.py

        pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)    #建立redis链接池
        r = redis.Redis(connection_pool=pool)                                           # 建立链接
        res_range = r.lrange('1', 0, 59)                                        # 取数据   取60个
        str_res = res_range[0]
        res = tuple(eval(str_res))

因为是循环定时任务 所以需要启动两个celery 命令 

启动celery :  celery -A celery_tasks.tasks worker  --pool=solo  (此命令在windows 下使用,其他命令多半会报错)

启动执行命令  :celery -A celery_tasks.tasks beat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值