文章目录

  • 方法一:使用while关键字
  • 方法二:使用apscheduler第三方库
  • 方法三:使用源生sched做循环的任务

首先写一个main函数:

import sys
import os
from scrapy.cmdline import executedef start_scrapy(): # 这个是我的任务,可以换成自己的任务哈sys.path.append(os.path.dirname(os.path.abspath(__file__)))execute(['scrapy', 'crawl', 'spider_name'])

方法一:使用while关键字

import sys
import os
from scrapy.cmdline import executeimport schedule
import time# 见上一步,这里我们写成一个函数的形式
def start_scrapy():sys.path.append(os.path.dirname(os.path.abspath(__file__)))execute(['scrapy', 'crawl', 'spider_name'])schedule.every(30).minutes.do(start_scrapy) # 每30分钟执行一次,注意这里的参数传递的是函数名,不要加括号
#schedule.every().hour.do(job)#每隔一小时执行一次任务
#schedule.every().day.at("23:30").do(job)#每天的23:30执行一次任务
#schedule.every().monday.do(job)#每周一的这个时候执行一次任务
#schedule.every().wednesday.at("23:30").do(job)#每周三23:30执行一次任务# 只要程序不关,就会循环执行
while True:schedule.run_pending()time.sleep(1)

方法二:使用apscheduler第三方库

首先安装依赖pip install apscheduler

import sys
import os
from scrapy.cmdline import execute
from apscheduler.schedulers.blocking import BlockingSchedulerdef start_scrapy():sys.path.append(os.path.dirname(os.path.abspath(__file__)))execute(['scrapy', 'crawl', 'spider_name'])sched = BlockingScheduler()
sched.add_job(start_scrapy, 'interval', seconds=10) #这里每10s执行一次 start_scrapy() ,注意传参的时候不要加括号
sched.start()

这是一些常用的配置

#执行一次:
#2019年3月1日0时0分0秒执行该程序
sched.add_job(job_fun, 'cron', year=2019,month = 03,day = 1,hour = 0,minute = 0,second = 0)
#从星期一到星期五5:30(AM)直到2014-05-30 00:00:00
sched.add_job(job_fun, 'cron', day_of_week='mon-fri', hour=5, minute=30,end_date='2014-05-30'#间隔多长时间后执行
#每隔30分钟执行一次
sched.add_job(my_job, 'interval',minutes = 30)
#每隔2天10时20分30秒执行一次任务
sched.add_job(my_job, 'interval',days  = 2,hours = 10,minutes = 20,seconds = 30)
#注意:执行一次时是day,间隔执行时为days,注意参数后面是否加's'

方法三:使用源生sched做循环的任务

import time
import sched
import sys
import os
from scrapy.cmdline import execute# 周期性执行给定的任务
s = sched.scheduler(time.time, time.sleep)# 被周期性调度触发的函数
def start_scrapy():sys.path.append(os.path.dirname(os.path.abspath(__file__)))execute(['scrapy', 'crawl', 'xinwen_spider'])def perform(inc):s.enter(inc, 0, perform, (inc,))start_scrapy()#每30 * 60 s执行一次(30分钟)
def main_scrapy(inc=1800): # 修改这里的秒数,就是想要循环执行的次数s.enter(0, 0, perform, (inc,))s.run()if __name__ == "__main__":main_scrapy()

周期性/定时执行python任务,使用三种方法:while、apscheduler、sched相关推荐

  1. 执行 Python 程序的三种方式及Python 的 IDE —— `PyCharm`

    执行 Python 程序的三种方式 3.1. 解释器 python / python3 Python 的解释器 # 使用 python 2.x 解释器 $ python xxx.py# 使用 pyth ...

  2. windows设置任务计划定时执行php程序,两种方法

    windows设置任务计划定时执行php程序,两种方法 1.定时执行bat文件 2.定时执行php文件 1.定时执行bat文件 新建一个php文件 :在php文件写入你要执行的程序: <?php ...

  3. pca算法python代码_三种方法实现PCA算法(Python)

    主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...

  4. pdo_fetch执行mysql_PDO中执行SQL语句的三种方法

    在PDO中,我们可以使用三种方式来执行SQL语句,分别是 exec()方法,query方法,以及预处理语句prepare()和execute()方法~大理石构件来图加工 在上一篇文章<使用PDO ...

  5. pca算法python实现_三种方法实现PCA算法(Python)

    主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...

  6. python打印菱形三种方法_用python打印菱形的实操方法和代码

    python怎么打印菱形?下面给大家带来三种方法: 第一种 rows = int(input('请输入菱形边长:\n')) row = 1 while row <= rows: col = 1 ...

  7. 互相关函数python实现的三种方法

    本人前段时间在做地震波分析的时候用到互相关函数的计算,所以做了一些具体的研究和分析.用python实现信号的互相关可以有三种方法:一.直接用时域法.二.用频域法.三.python提供的numpy.co ...

  8. Windows下安装Python 模块的三种方法

    方法一:cmd命令行窗口 首先打开windows上的cmd命令行窗口,再将目录切换到python运行的那个目录下,那怎么查看自己是在那个目录下呢? 鼠标右键点击file,依次点开就可以看到运行路径.在 ...

  9. 在终端执行 Python 代码的 6 种方法,原来还能这样!

    来自 | Python猫  编译 | 豌豆花下猫 原作 | BRETT CANNON 为了我们推出的 VS Code 的 Python 插件[1],我写了一个简单的脚本来生成变更日志[2](类似于To ...

  10. python数据增强三种方法

    程序1: # -*- coding:utf-8 -*- """数据增强1. 色彩抖动 color jittering2. 噪声扰动 noise3. 旋转变换/反射变换 R ...

最新文章

  1. txt 乱码_STATA数据导入——将TXT、EXCEL、SAS、SPSS数据/批量导入STATA
  2. 独家 | 关于NLP和机器学习之文本处理的你需要知道的一切(附学习资源)
  3. FreeRTOS 临界段和开关中断
  4. C语言经典例73-反向输出一个链表
  5. python之pygame安装教程_Python中pygame安装方法图文详解
  6. Android 交叉编译
  7. WPF 制作便携小空调
  8. vim 安装vim-prettier
  9. liunx下NetworkManager导致网卡不能启动
  10. 元组的相关操作,定义,查找,修改
  11. 风口来了?关于电子信息工程专业的有关介绍
  12. 什么是DTC?为什么国内外如此火爆
  13. 递归算法之八皇后问题
  14. php做一个文章页面,thinkphp教程-文章内容页上一页下一页功能实现
  15. mailgun php 邮件发送 实例
  16. 如何通过优化物流体验的技术来提高客单价?
  17. 一、安装docker
  18. Python tutrle画棋盘格
  19. ARM-------->第六天,IRQ中断
  20. 术语-BPM:BPM

热门文章

  1. UE3 移动设备分析
  2. UE3 预计算可见性
  3. smoothstep
  4. UE3 中文教程主页
  5. STL之accumulate
  6. hive+python数据分析入门
  7. 用lsof恢复已删除的文件
  8. 微软服务器虚拟化-Hyper-v详解
  9. Apache Load Balance Using Haproxy
  10. insert exec 语句不能嵌套_Python基础入门知识点——if 语句简介