在服务器上部署pyspider surpervisor 出现的问题

参考文章:centos7分布式部署pyspider

在这篇文章中介绍了在centos7上进行安装python pyspider surpervisor的方法,基本安装流程可以按他的走,本文主要讲在此过程中遇到问题和解决方法,此过程并不是分布式部署。

基本介绍:pyspider爬虫框架,surpervisor是pyspider推荐的监控器,可以理解为实时管理软件进程的后台软件,你可以通过surpervisor监控你正在运行的软件,对出错退出的软件进行重启,安装过程中大部分的错误出自surpervisor的配置问题。

以下问题和解决方法都建立在你需要surpervisor进行监控的进程能够正常运行,例如在本例中pyspider以能够在服务器下正常运行。

问题1
启动surpervisor后,用查询命令status显示如下

# supervisorctl status 
unix:///var/tmp/supervisor.sock refused connection

解决方法
查看supervisord.conf 配置文件
unlink /tmp/supervisor.sock

# supervisord -c /etc/supervisord.conf 
Error: could not find config file /etc/supervisor/supervisord.conf 
For help, use /usr/bin/supervisord -h

# whereis supervisord.conf 
supervisord: /usr/bin/supervisord /etc/supervisord.conf /etc/supervisord

# supervisord -c /etc/supervisord.conf 
Unlinking stale socket /var/tmp/supervisor.sock

# unlink /tmp/supervisor.sock 
unlink: cannot unlink `/tmp/supervisor.sock’: No such file or directory

# unlink /var/tmp/supervisor.sock

# supervisorctl status 
unix:///var/tmp/supervisor.sock no such file

# supervisord -c /etc/supervisord.conf

# supervisorctl status 
m-tomcat RUNNING pid 11125, uptime 0:00:03 
platform RUNNING pid 11124, uptime 0:00:03 
rap-tomcat RUNNING pid 11123, uptime 0:00:03 
redis_6379 BACKOFF Exited too quickly (process log may have details) 
tomcat RUNNING pid 11130, uptime 0:00:03
 ———————————————— 
版权声明:本文为CSDN博主「叫我泽西哥好吗」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013897685/article/details/81866709

问题2
启动supervisor后,supervisorctl status 没有看到你在supervisord.conf配置的进程

supervisorctl start pyspider pyspider: ERROR (no such process)

解决方法
检查supervisord.conf,看看你配置的 program: pyspider是否正常
以下是我的部分配置文件supervisord.conf,其中知保留了我修改的部分

[program:pyspider]
command=/root/anaconda3/bin/pyspider -c /etc/pyspider/pyspider.conf.json
autorestart=true
autostart=true
startsecs=0
user=root
group=pyspider
directory=/root/pyspider
stderr_logfile=/etc/pyspider/pyspider_err.log
stdout_logfile=/etc/pyspider/pyspider.log


;[program:theprogramname]
;command=/bin/cat              ; the program (relative uses PATH, can take args
)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1                    ; number of processes copies to start (def 1)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=999                  ; the relative start priority (default 999)
;autostart=true                ; start at supervisord start (default: true)
;autorestart=true              ; retstart at unexpected quit (default: true)
;startsecs=10                  ; number of secs prog must stay running (def. 1)
;startretries=3                ; max # of serial start failures (default 3)
;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2
)


#[include]
#files = supervisord.d/*.ini

问题3
supervisorctl status 显示你的进程有如下错误

fatal Exited too quickly (process log may have details)

解决方法
检查你的supervisord.conf
确保你配置的进程有

startsecs=0

,可以参照上个问题的配置。
确保你的command路径正确,例如我的

command=/root/anaconda3/bin/pyspider -c /etc/pyspider/pyspider.conf.json

当你command命令无法确定时,你可能在supervisord的错误反馈中
(我在supervisord.conf设置的反馈路径为参数stderr_logfile=/etc/pyspider/pyspider_err.log)
看到如下提示

supervisor: couldn't chdir to /pyspider: ENOENT
supervisor: child process was not spawned
supervisor: couldn't chdir to /pyspider: ENOENT
supervisor: child process was not spawned
supervisor: couldn't chdir to /pyspider: ENOENT
supervisor: child process was not spawned
supervisor: couldn't chdir to /pyspider: ENOENT
supervisor: child process was not spawned

这是因为在此之前我的command命令为

command=pyspider -c /etc/pyspider/pyspider.conf.json

改为

 command=/root/anaconda3/bin/pyspider -c /etc/pyspider/pyspider.conf.json

即可。你可以通过whereis 命令查询要执行的软件具体路径,例如

#whereis pyspider
/root/anaconda3/bin/pyspider

问题4
监控的进程一直在重启,持续时间一直为0

pyspider                         RUNNING   pid 20165, uptime 0:00:00
pyspider                         RUNNING   pid 20169, uptime 0:00:00
pyspider                         RUNNING   pid 20171, uptime 0:00:00

你可以看到pid一直在变,说明进程不断重启。查询错误反馈,回到3个问题,command的问题。
解决方法
同问题3

到此我的pyspider就配置成功了,supervisor确保pyspider一直处于运行,之后就剩下爬取了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果您的 PySpider 一直卡在 "result_worker starting...",可能是因为 result_worker 进程无法正常启动。 以下是一些可能的解决方法: 1. 检查日志:可以检查 PySpider 的日志,查看是否有任何错误或警告信息。日志文件通常位于 `logs/` 目录下。 2. 检查端口:确保您使用的端口没有被占用。您可以尝试使用其他端口启动 PySpider,例如: ``` pyspider all --webui-port=8081 --scheduler-port=23333 --result-port=25555 ``` 3. 升级 PySpider:尝试升级到最新版本的 PySpider,可能会修复已知的问题。 4. 重启机器:有时候重启机器可以解决一些问题,尝试重启机器并再次启动 PySpider。 5. 检查依赖项:确保您的系统中已安装了 PySpider 所需的所有依赖项。您可以尝试重新安装依赖项或使用虚拟环境来隔离依赖项。 如果以上方法均未能解决问题,您可以尝试在 PySpider 的 GitHub 仓库上提交一个 issue,以获取更多的帮助。 ### 回答2: pyspider 是一种基于 Python 的开源网络爬虫框架,用于快速、高效地进行网络数据采集和处理。在使用 pyspider 进行爬虫任务时,可能会遇到一直卡在 "result_worker starting..." 的问题。 "result_worker starting..." 是指 pyspider 的结果处理模块在启动过程中出现问题,导致无法正常运行。这个问题可能有多种原因,下面我将介绍几个可能的解决方法: 1. 检查配置文件:首先确保你的配置文件中没有错误,特别是数据库和消息队列的连接设置是否正确。可以参考 pyspider 的官方文档来配置正确的参数。 2. 检查网络连接:确保你的网络连接是正常的,可以尝试访问相关的数据库和消息队列服务,确保它们都可以正常访问和连接。 3. 检查依赖库:如果你的系统中安装了多个版本的 Python 或依赖库,可能会导致冲突或不兼容的问题。可以尝试重新安装或更新相关的依赖库来解决冲突问题。 4. 启用日志调试:在启动 pyspider 时,可以使用 `-q` 参数来启用详细的日志输出,这样可以更好地了解问题的具体原因。可以通过查看日志来获取更多的调试信息,以便进行问题排查。 5. 参考社区和文档:pyspider 有一个活跃的社区,你可以在社区中提问和寻求帮助。此外,可以查阅 pyspider 的官方文档和相关教程,寻找更多的解决方案和建议。 希望以上几点能够帮助你解决 pyspider 卡在 "result_worker starting..." 的问题,并能够顺利运行你的爬虫任务。如果问题仍然存在,建议你提供更多的细节信息,以便更好地帮助你解决问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值