多任务 schedule python_Python定时任务:调度模块,schedule

今天把以前的项目拿出来重新写了下,然后就发现定时任务这里有点问题,我以前是在乌班图里跑项目,所以当时使用的

django-crontab

实现的,但是我现在在Windows系统下跑项目需要改造这里,准备使用 schedule模块

两种方案的对比:

django-crontab

安装

pip3 install django-crontab

添加应用

INSTALLED_APPS = [

...

'django_crontab', # 定时任务

]

创建定时任务

def my_scheduled_job():

pass

配置定时任务

在django项目的settings里添加如下

CRONJOBS = [

('*/5 * * * *', 'myapp.cron.my_scheduled_job')

]

基本格式 :

* * * * *

分 时 日 月 周 命令

M: 分钟(0-59)。每分钟用*或者 */1表示

H:小时(0-23)。(0表示0点)

D:天(1-31)。

m: 月(1-12)。

d: 一星期内的天(0~6,0为星期天)。

启动命令

注意点

运行和django无关,依赖的是linux的crontab定时服务,因此

无法在windowns下运行

schedule

安装

pip3 install schedule

使用

import schedule

def work1():

print('生成静态页')

def work2(xxx):

print(xxx)

xxx = '生成静态页'

schedule.every(2).minutes.do(work1)

schedule.every().hour.do(work1)

schedule.every().day.at("9:30").do(work1)

schedule.every().monday.do(work1)

schedule.every().sunday.at("13:00").do(work1)

# 带参数

schedule.every(5).to(10).days.do(work2, xxx)

while True:

schedule.run_pending()

# 每隔2分钟执行一次任务

# 每隔一小时执行一次任务

# 每天的9:30执行一次任务

# 每隔5到10天执行一次任务

# 每周一的这个时候执行一次任务

# 每周日12:00执行一次任务

# run_pending:运行所有可以运行的任务

注意:

schedule方法是串行的,也就是说,如果各个任务之间时间不冲突,那是没问题的;如果时间有冲突的话,会串行的执行命令

优点:简单, 不依赖django,python都可以用

缺点: 在django环境需要另起线程(使用celery异步不错)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值