合做公司的MM今天送来第六份文档,我在开发之处留意并担忧的问题最终仍是被提出来了。文档中大多数为细节调整,重点问题集中在全站商品分类(goodcat)的增删改查和前端展开特效、current_item定位以及数据筛查。修改完成后上传到服务器时出现了问题,kill掉Supervisor后重启发现遇到了新问题。php
问题触发环境
我在Linux(Centos)系统的服务器上部署Tornado实例的时候,启动Supervisor遇到的socket.error问题,前端
项目部署是Supervisor + Apache完成的,关键参数配置:python
Supervisor:user=apache;linux
Apache:面试
ProxyRequests Off
ajax
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:8899/
ProxyPassReverse / http://127.0.0.1:8899/
错误详细信息:mongodb
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)先看他的回答:apache
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/