合作公司的MM今天送来第六份文档,我在开发之处留意并担心的问题最终还是被提出来了。文档中大多数为细节调整,重点问题集中在全站商品分类(goodcat)的增删改查和前端展开特效、current_item定位以及数据筛查。修改完成后上传到服务器时出现了问题,kill掉Supervisor后重启发现遇到了新问题。
问题触发环境
我在Linux(Centos)系统的服务器上部署Tornado实例的时候,启动Supervisor遇到的socket.error问题,
项目部署是Supervisor + Apache完成的,关键参数配置:
Supervisor:user=apache;
Apache:
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:8899/
ProxyPassReverse / http://127.0.0.1:8899/
错误详细信息:
error: <class ‘socket.error‘>, [Errno 101] Network is unreachable: file: /usr/local/lib/python2.7/socket.py line: 571
解决方案
通过查阅,我发现StackOverflow上kelorek的一个回答可以解决此类问题,It does work,thank you。(@kelorek)先看他的回答:
You have to start supervisord before you can use supervisorctl. In my case:
sudo supervisord -c /etc/supervisor/supervisord.conf
sudo supervisorctl -c /etc/supervisor/supervisord.conf
即通过配置文件来启动supervisor,然后再使用supervisorctl。所以我执行命令:
# /usr/local/bin/supervisord –c /etc/supervisor/supervisor.conf
其实到这里我的问题已经解决了,无需继续使用命令:supervisorct start yourappname开启tornado项目。
Tips:题主的问题中提到的错误是:
error: <class ‘socket.error‘>, [Errno 111] Connection refused: file: /usr/lib64/python2.6/socket.py line: 567
Supervisor知识点补充
supervisord & supervisorctl是Supervisor的两个可执行程序,其关系相当与Apache下的httpd & apachectl。
- supervisord 是后台管理服务器, 用来依据配置文件的策略管理后台守护进程, 它会随系统自动启动;
- supervisorctl 用于管理员向后台管理程序发送 启动(start)/重启(restart)/停止(stop) 等指令。
=======分隔线,一下内容仅为随笔记录,可不看=========
好吧,又无耻地水了一篇文章(记录操作错误类的文章在我看来确实有些应付),其实这并并不是我的本意。我在文章首段提到了,重点问题在分类的设计上。凑巧在前几天浏览高级Web架构师面试题时看到了一个同种类型的题目——“数据库设计范畴中的树形数据结构设计”。
树形数据,主要关注的是:
- 如何将数据高效地以树形的形式展现给用户。
- 通过某个节点找到所有的父节点。
- 获取某个节点的所有的后继节点(包括子节点的子节点)
树形数据结构设计我并不是第一次接触,之前开发商城系统时也让它折腾过。但是目前将它从无到有、设计完善也不是几分钟就能搞定的事儿,不容易!而且这只是上一批开发者挖的坑之一,尤其是Python + Mongodb还不是我的强项(我的怨言就是从这来的)。之前有篇文章《初试MongoDB数据结构设计及$in查询—多层级分类目录》,简单探讨在Python + Mongdb架构下设计category以及如何查询,以后会单独写篇文章深入研究总结。
https://www.gznotes.com/supervisor-socket-error-errno-101/