Django 中使用APScheduler

介绍

这个围绕APScheduler的小包装程序使您可以使用Django的ORM将持久性作业存储在数据库中,而无需使用SQLAlchemy或其他过时的软件。

  • 同时在python2.*和python3 +上工作
  • 通过Django管理界面管理作业
  • 监视作业执行状态:持续时间,异常,回溯,输入参数。

安装APScheduler

pip install django-apscheduler

django-apschedule的使用

配置
  1. 在Django项目中的settings.py添加字段;
INSTALLED_APPS = (
  ...
  "django_apscheduler",
)
APSCHEDULER_DATETIME_FORMAT =  "N j, Y, f:s a"  # Default
  1. 执行迁移命令:
python manage.py migrate
views.py 中使用
import time

from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_events, register_job

scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), "default")

@register_job(scheduler, "interval", seconds=1)
def test_job():
    time.sleep(4)
    print("I'm a test job!")
    # raise ValueError("Olala!")

register_events(scheduler)

scheduler.start()
print("Scheduler started!")
django UWSGI APScheduler定时任务无效
  • django项目使用APScheduler来处理定时一个定时任务:在某个固定的时间更新数据库。

  • 开发阶段测试都没有问题,生产环境使用django+nginx+uwsgi来部署应用,这时候发现APScheduler定时任务根本不起作用,查了一下资料发现原来是uwsgi配置enable-threads参数的问题。

  • 该参数的含义是:是否允许用内嵌的语言启动线程。

  • 在uwsgi文件中配置该参数即可:

enable-threads = true

  • 这将允许你在app程序中产生一个子线程
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值