django-q快速上手定时任务

概述

网上关于django-q的内容很少,连配置文档都没有,这里写一篇入门文档,一起学习。我个人感觉,django-q简直吊打celery。在定时任务上面,设置非常简单,也不会遇到一些奇奇怪怪的问题。
注意:这里面对要调用的函数,使用的是字符串的方式,最开始我对这个很疑惑,不过后来才发现这样更方便,彻底将要执行的任务函数和这个任务机制解绑,不像celery,不注册就没法使用。

环境搭建

注意:如果使用python3.6,请不要使用django 3.x,要用django2.x,
建议使用python3.7
另,我再windows上没有成功运行,原因未知。

安装

使用pip进行安装

pip install django-q

在项目settings.py中将django_q添加到INSTALLED_APPS:

INSTALLED_APPS =(
    # 其他应用
    'django_q',
)

运行Django迁移以创建数据库表:

python manage.py migrate

组态

选择一个消息代理并配置。
这里以redis为例:
安装redis需要的环境:

sudo apt install redis-server
pip3 install redis
pip3 install django-redis

注意:这里有一个问题,redis不支持消息回执。如果对你的需求有影响建议更换消息代理。

配置settings.py文件

# settings.py示例
Q_CLUSTER = {
    'name': 'myproject',#项目名称
   'workers': 4,  #worker数。默认为当前主机的CPU计数,
    'recycle': 500,  # worker在回收之前要处理的任务数。有助于定期释放内存资源。默认为500。
    'timeout': 60,  # 任务超时设置,如果是爬虫任务建议设置长一些
    'compress': True,  # 数据压缩
    'save_limit': 250,  # 限制保存到Django的成功任务的数量。0为无限,-1则不会保存
    'queue_limit': 500,  # 排队的任务数量,默认为workers**2。
    'cpu_affinity': 1,  # 设置每个工作人员可以使用的处理器数量。根据经验; cpu_affinity 1支持重复的短期运行任务,而没有亲和力则有利于长时间运行的任务。
     'label': 'Django Q',  # 用于Django Admin页面的标签。默认为'Django Q',之后我会根据源码做一个中文版的django-admin页面。如果有需求请私信我
    'redis': {#如果配置了redis缓存,可以使用django的设置,请参考官方文档。
        'host': '127.0.0.1',
        'port': 6379,
        'db': 0, }
}

启动

先启动qcluster

python manage.py qcluster

再启动django,
如果要监视集群:

$ python manage.py qmonitor

使用以下方法检查总体统计信息:

python manage.py qinfo

如果到这里能够正常运行,恭喜你,已经完成一半了。

通过页面的方式添加任务

tasks.py

在app下创建tasks.py,该文件主要是存储需要调用的一些方法。举例如下:

# tasks.py
def add(a,b)
    return a+b

假定这个app名字叫dj_q_test,那么,在页面可以这么创建定时任务:
在这里插入图片描述
进去之后,这么输入参数:
在这里插入图片描述
设置运行时间:
在这里插入图片描述
点击保存之后,在这里查看就ok:
在这里插入图片描述
如果想要在代码里面执行,同样很简单。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值