灵活设置定时脚本启停

一、爬虫定时任务python脚本:

        对于爬虫任务,通常需要设置定时任务自动启动,每天按时执行爬虫程序,而我们要做的就是通过数据库以及日志查看运行情况是否有异常。下面给出一个简单方便的定时器代码:
 

# coding:utf-8

'''
2018.03.14
'''

import sys 
import time
import datetime 
import subprocess 
import signal
import os

# 定时函数
def alarm(h,m=0,s=0):
    """当前时间大于预设时间就进行下面函数执行,否则sleep 1秒"""
    while True:
        # 拼接设置的时间为时间戳
        str_time = time.strftime("%Y-%m-%d", time.localtime()) + f" {h}:{m}:{s}"
        # 将字符串时间戳改为时间戳数字
        timeStamp = int(time.mktime(time.strptime(str_time, "%Y-%m-%d %H:%M:%S")))
        if time.time() >= timeStamp:
            print("开始执行下面函数")
            return True
        time.sleep(3)
        print("dadada~")

try:

    h = int(datetime.datetime.now().strftime('%H'))
    # 每日按 schedule 运行 run.py
    while True:
       
        # schedule -> 9点启动(使用morning账号), 15点10分重启(更换为afternoon账号), 21点停止
        # 定时9点开始任务
        alarm(9, 0, 0)

        print('run `python3.6 run.py %s`')
        cmd = 'nohup python3.6 run.py %s 1>msg 2>err &'
        os.popen(cmd, 'r', 1024 * 1024)
        
        # 定时21点结束任务
        alarm(21, 0, 0)
        cmd = 'killall -u "用户名" python %s'  # 此处我的关闭是暴力关闭当前账号的所有python进程,你可以根据自己的灵活修改
        os.popen(cmd, 'r', 1024)
        cmd = 'rm cookies/*'
        os.popen(cmd, 'r', 1024)
        time.sleep(20000)
        h = 0
 
except KeyboardInterrupt:
    sys.exit('schedule: Ctrl-C')

   

、爬虫定时任务系统脚本:

           经过使用测试,鉴于前面脚本的稳定性不够好,故改用次脚本

           使用此命令进入:

spider@iZ2zea1ofhnvumrauiilZ:~$ crontab -e

进入后界面为空文本:(编辑后为下代码所示)

30 18 * * 1-5 cd /home/spider/data-system_new;/usr/bin/nohup /usr/local/bin/python3.6 run.py &
50 10 * * 6,0 cd /home/spider/data-system_new;/usr/bin/nohup /usr/local/bin/python3.6 run.py &
59 23 * * * cd /home/spider/data-system_new;/bin/sh kill_all.sh &

应用程序启入口为:run.py    路径为:/home/spider/data-system_new/run.py  

结束进程脚本为:kill_all.sh   路径为:/home/spider/data-system_new/kill_all.sh

解释器路径为:/usr/bin/nohup /usr/local/bin/python3.6  (务必确保解释器路径的正确性)

下面解读一下语句的含义:

        30 18  *   *  1-5   cd /home/spider/data-system_new;/usr/bin/nohup /usr/local/bin/python3.6 run.py &

        分  时 日 月 周 |《==============命令行=======================》|

注意: *  代表任何时刻都接受的意思。上列举的代码意思是在周一至周五的18:30分执行后面的代码启动程序。

需要了解更多的crontab使用,请使用crontab --help 产看文档根据自己需要进行配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值