Python爬虫之用supervisor使scrapy在服务器后台运行

折腾缘由

以前都是远程链接服务器,而后在命令行运行scrapy crawl spider,一旦关闭远程链接,爬虫就会中止,很不爽,毕竟能让一个爬虫在服务器一直跑才是每一个小白的梦想= =,因此开始研究如何使程序在后台运行,刚开始看了scrapyd,感受很差用,又搜了搜,发现了supervisor这个python进程管理程序。python

supervisor简介

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是经过fork/exec的方式把这些被管理的进程看成supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去便可。也实现当子进程挂掉的时候,父进程能够准确获取子进程挂掉的信息的,能够选择是否本身启动和报警。supervisor还提供了一个功能,能够为supervisord或者每一个子进程,设置一个非root的user,这个user就能够管理它对应的进程。shell

安装supervisor

个人系统是centos7因此运行如下命令centos

# yum install supervisor

等待安装完后,进入/ect目录,主要看以下两个文件。
etc
supervisord.conf为主配置文件,能够打开看一下,不用更改,supervisord.d为子进程的配置文件夹,存放在这里的配置文件在程序启动后会自动读取该文件夹下的文件,咱们进入这个文件夹,建立一个子进程文件,名为awesome.ini,内容以下:服务器

[program:awesome]

command     = shell.py
directory   = /python/scrapy
user        = root
startsecs   = 3

redirect_stderr         = true
stdout_logfile_maxbytes = 50MB
stdout_logfile_backups  = 10
stdout_logfile          = /log/app.log

说明:
command:为要后台运行的shell命令
directory:指定command命令要执行的文件夹
user:执行命令的用户
stdout_logfile:程序运行的日志,报错能够在这里看。
建立好子进程文件后,运行以下命令解锁程序:app

# sudo unlink /run/supervisor.sock

再运行如下命令运行程序启动爬虫:python2.7

# supervisord

运行成功会有以下提示:scrapy

/usr/lib/python2.7/site-packages/supervisor/options.py:296: UserWarning: Supervisord is running 
as root and it is searching for its configuration file in default locations (including it
s current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.
  'Supervisord is running as root and it is searching '

进程管理的相关命令

1) 查看全部子进程的状态:ide

# supervisorctl status

awesome                             RUNNING    pid 2395, uptime 0:08:41

2)关闭、开启指定的子进程:centos7

# supervisorctl stop zhoujy
awesome: stopped

3)关闭、开启全部的子进程:spa

# supervisorctl stop all
awesome: stopped
# supervisorctl start all
awesome: started

总结

终于能够愉快的爬虫了呢!OvO

相关文章
相关标签/搜索