APScheduler定时执行外加supervisor管理后台运行

最近写的天气爬虫想要让它在后台每天定时执行,一开始用的celery,但不知道为什么明明设置cron在某个时间运行,但任务却不间断的运行。无奈转用apscheduler,但是不管怎么设置都不能使得当调用: python  tasks.py 的时候都会阻塞在控制台。再次无奈转用supervisor。

首先是任务tasks.py:

#-*- coding: utf-8 -*-
#!/usr/bin/python

import datetime
from apscheduler.schedulers.blocking import BlockingScheduler
from scrapy.crawler import CrawlerProcess
from province_spider import ProvinceSpider
from billiard import Process

from scrapy.utils.log import configure_logging
configure_logging({‘LOG_FORMAT‘: ‘%(levelname)s: %(message)s‘, ‘LOG_FILE‘: ‘schedule.log‘})

def _crawl(path=None):
     crawl = CrawlerProcess({
         ‘USER_AGENT‘: ‘Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)‘
     })
     crawl.crawl(ProvinceSpider)
     crawl.start()
     crawl.stop()

def run_crawl(path=None):
    p = Process(target=_crawl, args=[‘hahahahha‘])
    p.start()
    #p.join()

scheduler = BlockingScheduler(daemon=True)
scheduler.add_job(run_crawl, "cron", hour=8, minute=30, timezone=‘Asia/Shanghai‘)
scheduler.add_job(run_crawl, "cron", hour=12, minute=30, timezone=‘Asia/Shanghai‘)
scheduler.add_job(run_crawl, "cron", hour=18, minute=30, timezone=‘Asia/Shanghai‘)

try:
    scheduler.start()
except (KeyboardInterrupt, SystemExit):
    scheduler.shutdown()

设置成8点半、12点半、18点半是因为天气数据是一天更新三次,分别在8点,12点,18点,有图为证:

直接执行:python tasks.py可以执行任务,但是会在控制台阻塞。这个时候要用supervisor。

ubuntu安装: apt-get install supervisor

开始:

1. 进行/etc/supervisor/conf.d 目录,新建weather_aps.conf文件,文件内容为:

[program:weather_aps]
command=python /var/my_git/WeatherCrawler/aps/tasks.py
autorstart=true
stdout_logfile=/var/my_git/WeatherCrawler/aps/log/weather_aps.log

2. 启动supervisor:

/etc/init.d/supervisor start

3. 启动成功后,查看weather_aps的状态:

supervisorctl status weather_aps

如果是running,则表示成功.

需要注意的是,如果在任务里面有日志输出到文件,而文件没有指定绝对路径的话,默认是在根目录生成,即在 ”  / “ 目录下。

时间: 2024-08-09 02:18:26

APScheduler定时执行外加supervisor管理后台运行的相关文章

Supervisor 管理后台守护进程

安装 pip install supervisor 启动 supervisord supervisord -c /etc/supervisord.conf supervisord 的配置文件默认位于 /etc/supervisord.conf,;后面为注释 关闭服务 supervisorctl stop all 先关闭supervisor启动脚本,之后再关闭supervisord服务 kill pid 配置 supervisord 配置 program 项的路径下:/etc/supervisor

使用Supervisor管理进程二

supervisor安装完成后会生成三个执行程序:supervisortd.supervisorctl.echo_supervisord_conf,分别是supervisor的守护进程服务(用于接收进程管理命令).客户端(用于和守护进程通信,发送管理进程的指令).生成初始配置文件程序. 3.配置 运行supervisord服务的时候,需要指定supervisor配置文件,如果没有显示指定,默认在以下目录查找: $CWD/supervisord.conf$CWD/etc/supervisord.c

使用supervisor管理进程

Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动.重启.关闭进程(不仅仅是 Python 进程).除了对单个进程的控制,还可以同时启动.关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动. 安装 Supervisor 可以运行在 Linux.Mac OS X 上.如前所述,supervisor 是 Python 编写的

supervisor管理后台进程

在linux中supervisor是用来管理后台进程的,是一个用python写的进程管理工具,可以让宕机的进程重启.这里我们大概讲一下用他来管理uWSGI. 一.安装supervisor 1.python2下的安装 supervisor不支持python3,所以你安装可以使用自带的python2安装,但是自带的python2没有安装pip (1)要安装pip,首先要安装setuptools wget https://pypi.python.org/packages/ff/d4/209f4939c

让PHP程序永远在后台运行

PHP里有个函数很有用.这是在最近的开发中才逐渐用到的. int ignore_user_abort ( [bool setting] ) 这个函数的作用是指示服务器端在远程客户端关闭连接后是否继续执行下面的脚本. setting 参数是一个可选参数.如设置为True,则表示如果用户停止脚本运行,仍然不影响脚本的运行(即:脚本将持续执行):如果设置为False,则表示当用户停止运行脚本程序时,脚本程序将停止运行. 下面这个例子,在用户关闭浏览器后,该脚本仍然后在服务器上继续执行: <?php i

python脚本后台运行

问题描述: 环境: CentOS6.4 一个用python写的监控脚本test1.py,用while True方式一直运行,在ssh远程(使用putty终端)时通过以下命令启动脚本: python test1.py & 现在脚本正常运行,通过ps能看到进程号,此时直接关闭ssh终端(不是用exit命令,是直接通过putty的关闭按钮执行的), 再次登录后发现进程已经退出了. 通过后台启动的方式该问题已经解决,这里总结下,也方便我以后查阅. linux 下后台运行 通过fork实现 linux环境

DBA_命令nohup使用将耗时时间过长的脚本执行转入后台(案例)(时间较长的脚本后台运行防止Session断掉)

2014-08-08 BaoXinjian 一.摘要 nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号. 在注销后使用 nohup 命令运行后台中的程序. 要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部. 1. 重定向日志文件 如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中.如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohu

批处理在任务计划中重复执行, 并且后台运行的实现

1.在任务计划程序中,右键新建任务, 2.运行时,总是弹出一个批处理的黑框,总是不太友好的,如何后台运行呢?在这里是通过vbs调用批处理实现的.CheckService.vbs set ws =WScript.CreateObject("WScript.Shell") ws.Run"D:\ERPbak\copy.bat",0 copy.bat @echo off xcopy D:\ERPbak \\192.168.0.34\ShareFile\ERPDBBackup

Centos7 .Net Core 使用Supervisor守护进程,进行后台运行

1.安装supervisor yum install supervisor 2.配置supervisor vim /etc/supervisord.conf 拉到最后,这里的意思是 /etc/supervisord.d 文件夹下的所有.ini结尾的文件都可以 supervisor默认端口是9001,配置username和password,即可通过远程进行访问图形界面 3.设置.net core运行配置 在/etc/supervisord.d/目录下新建demo.init配置文件 [program