2020-11-06

django-crontab实现Django定时任务

Time After Time

1. 前言

为了做一些报表,最近需要每日从爱站上抓取竞争对手的百度流量和移动流量,从我能实现的技术来看,大致有三种实现形式:

  1. 火车头定时抓取
  2. python+crontab定时抓取,保存在txt或cav或数据库中;
  3. django定时任务,用admin系统或模板系统展现。

第一种不熟悉,还要摸索;第二种数据展现还要自己写,如果用数据库,还要用很原始的连接方式,至少用了django之后是这样;第三种优点是可以用admin系统或模板系统来,缺点是定时任务不熟悉。但考虑到打算深入学习django,于是决定用第三种方式来实现。

2. Django定时任务

Django的定时任务基本也有三种实现形式:

  1. django-celery
  2. Django的command+crontab
  3. 一些第三方库,如django-crontab

首先,看了下django-celery的官方教程,celery还是比较庞大的,而且教程比较复杂,没耐心的我就先行跳过了;

其次,又看了Django关于command的官方文档,实现了command+crontab的形式。但因为是在virtualenv下部署,一直无法实现。即便crontab中已经设置了先进入virtualenv再运行command仍然失败了(crontab中语法是source /home/../bin/activate && python /home/.../manage.py aizhan_visits)。

最后,选择了第三方库django-crontab,竟意外的实现了Django在virtualenv下的的定时任务。。

3. django-crontab实现Django在virtualenv的定时任务

3.1 django-crontab安装

  • django-crontab安装

pip install django-crontab

No comments:

Post a Comment