方案一 django-crontab
- 安装
pip install django-crontab
- 部署
在django项目的settings里添加如下:
INSTALLED_APPS = (
'django_crontab',
...
)
- 创建定时任务
def my_scheduled_job():
pass
- 配置定时任务
在django项目的settings里添加如下:
CRONJOBS = [
('*/5 * * * *', 'myapp.cron.my_scheduled_job')
]
-
启动定时任务
python manage.py crontab add
-
显示定时任务
python manage.py crontab show
-
删除定时任务
python manage.py crontab remove
-
优缺点:
运行和django无关,依赖的是linux的crontab定时服务,因此无法在windowns下运行。
方案二 schedule
- 安装
pip install schedule
- 使用
import schedule
import time
def job():
print("I'm working...")
schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every(5).to(10).minutes.do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job)
schedule.every().minute.at(":17").do(job)
while True:
schedule.run_pending()
time.sleep(1)
- 优缺点
优点:简单, 不依赖django,python都可以用
缺点: 在django环境需要另起线程
方案三 apscheduler (简单环境下,推荐使用)
- 安装
pip install apscheduler
- 使用
from apscheduler.schedulers.background import BackgroundScheduler
scheduler = BackgroundScheduler()
scheduler.add_job(test.job, 'interval', minutes=1)
scheduler.start()
- 优缺点
和schedule类似, 是schedule的加强版, 帮用户已经封装了线程,使用比schedule方便
方案四 celery
没有demo,自己查文档,在小项目不建议用,杀鸡用牛刀。
网友评论