django定时任务实现方案

2019-01-24  本文已影响0人  你猜_19ca

方案一 django-crontab

INSTALLED_APPS = (
    'django_crontab',
    ...
)
def my_scheduled_job():
  pass
CRONJOBS = [
    ('*/5 * * * *', 'myapp.cron.my_scheduled_job')
]

参考: https://pypi.org/project/django-crontab/

方案二 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)

参考: https://pypi.org/project/schedule/

方案三 apscheduler (简单环境下,推荐使用)

from apscheduler.schedulers.background import BackgroundScheduler
scheduler = BackgroundScheduler()
scheduler.add_job(test.job, 'interval', minutes=1)
scheduler.start()

参考: https://apscheduler.readthedocs.io/en/latest/index.html

方案四 celery

没有demo,自己查文档,在小项目不建议用,杀鸡用牛刀。

上一篇 下一篇

猜你喜欢

热点阅读