资讯专栏INFORMATION COLUMN

django开发-定时任务的使用

wean / 3468人阅读

摘要:今天介绍在中使用定时任务的两种方式。添加并启动定时任务其它命令显示当前的定时任务删除所有定时任务今天的定时任务就说到这里,有错误之处,欢迎交流指正

今天介绍在django中使用定时任务的两种方式。

方式一: APScheduler
1)安装:

pip install apscheduler

2)使用:

from apscheduler.scheduler import Scheduler
from django.core.cache import cache
# 实例化
sched = Scheduler()    

# 每30秒执行一次
@sched.interval_schedule(seconds=30)
def sched_test():
    """
    测试-定时将随机数保存到redis中
    :return:
    """
    seed = "123456789"
    sa = []
    for i in range(4):
        sa.append(random.choice(seed))
    code = "".join(sa)
    cache.set("test_"+code, code)

3)启动定时任务

# 启动定时任务
sched.start()

方式二: django-crontab
1) 安装:

pip install django-crontab

2) 添加配置到INSTALL_APPS中
INSTALLED_APPS = (

"django_crontab",

)
3) 编写定时函数:

在django的app中新建一个test_crontab.py文件,把需要定时执行的代码放进去
    import random

    from django.core.cache import cache

    def test():
        """
        测试-定时将随机数保存到redis中
        :return:
        """
        seed = "123456789"
        sa = []
        for i in range(4):
            sa.append(random.choice(seed))
        code = "".join(sa)
        cache.set("test_"+code, code)

4)编写定时命令
Django为项目中每一个应用下的management/commands目录中名字没有以下划线开始的Python模块都注册了一个manage.py命令, 自定义一个命令如下: 必须定义一个继承自BaseCommand的Command类, 并实现handle方法。
编写appname/management/commands/test.py文件

import random

from django.core.management.base import BaseCommand
from django.core.cache import cache

class Command(BaseCommand):
    """
    自定义命令
    """
    def handle(self, *args, **options):
        """
        自定义命令
        :return:
        """
        seed = "123456789"
        sa = []
        for i in range(4):
            sa.append(random.choice(seed))
        code = "".join(sa)
        cache.set("test_"+code, code)

定义完成后,执行python manage.py test, 会执行handle()函数

5) 在settings.py中增加配置

# 运行定时函数
CRONJOBS = [
    ("*/1 * * * *", "appname.test_crontab.test",">>/home/python/test_crontab.log")
]

# 运行定时命令
CRONJOBS = [
    ("*/1 * * * *", "django.core.management.call_command", ["test"], {}, ">> /home/python/test.log"),
]

上面主要有3个参数,分别表示: 定时任务执行时间(间隔), 待执行定时任务, 将定时任务的信息追加到文件中
对于熟悉linux中定时任务crontab的同学可能对上面第一个参数的语法很亲切。上面表示每隔1分钟执行一次代码。

linux中的定时任务crontab的语法如下:

*  *  *  *  * command
分钟(0-59) 小时(0-23) 每个月的哪一天(1-31) 月份(1-12) 周几(0-6) shell脚本或者命令

例子:

0 6 * * * commands >> /tmp/test.log # 每天早上6点执行, 并将信息追加到test.log中
0 */2 * * * commands # 每隔2小时执行一次

有兴趣的小伙伴可以深入研究下linux的crontab定时任务。

6) 添加并启动定时任务

python manage.py crontab add

其它命令:

python manage.py crontab show: 显示当前的定时任务
python manage.py crontab remove: 删除所有定时任务

今天的定时任务就说到这里,有错误之处,欢迎交流指正!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42510.html

相关文章

  • Django定时任务Django-crontab使用方法介绍

      Python中的功能还是相当的多的,比如,会涉及到使用Django定时任务,在工作当中,它的用途是比较的多的,其中,测试工程师用到这种的功能是比较多,所以我们要去进行详细的了解下,下面就给大家详细的解答下。  在使用的django做测试平台时,,多多少少都会遇到需要定时任务的功能,比如定时执行任务,检查订单之类的。可能是一段时间,比如每隔10分钟执行一次,也可能是定点时间,比如14:00执行,...

    89542767 评论0 收藏0
  • 关于 Django 开发 11 件事

    摘要:在这里的脚本有,部署到预发布生产服务器,清理目录,压缩,备份数据库,在本地,等等。目录存储了所有数据库,,,,等等的配置文件。我使用做所有的排序任务,从发送邮件到从拉取数据。当我第一次开始开发和的时候,我使用,但是已经把所有事情移植进了。 本文原文是 11 Things I Wish I Knew About Django Development Before I Star...

    JayChen 评论0 收藏0
  • Celery实际使用与内存泄漏问题(面试)

    摘要:结论执行完任务不释放内存与原一直没有被销毁有关,因此可以适当配置小点,而任务并发数与配置项有关,每增加一个必然增加内存消耗,同时也影响到一个何时被销毁,因为是均匀调度任务至每个,因此也不宜配置过大,适当配置。 1.实际使用 ​ 监控task的执行结果:任务id,结果,traceback,children,任务状态 ​ 配置 backend=redis://127...

    0x584a 评论0 收藏0
  • Django使用celery 异步发送短信验证码

    摘要:介绍应用举例是一个基于开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,如果你的业务场景中需要用到异步任务,就可以考虑使用你想对台机器执行一条批量命令,可能会花很长时间,但你不想让你的程序等着结果返回,  celery 1.celery介绍 1.1 celery应用举例 Celery 是一个 基于python开发的分布式异步消息任务队列,通过...

    everfly 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<