1.在用netstat -lpt查看服务器监听的所有端口以及对应的进程id时,如果是root启动的进程,而用非root账号查看,是看不到进程id的
2.一般非root权限的进程不能绑定80端口(http请求的默认端口),两种方法解决:
a)以root权限启动程序
b)修改执行文件权限
chown root:root xxx
chmod 777 xxx
chmod u+s xxx
3.Python3.4以上才支持asyncio,3.5.3以上才支持aiohttp
4.安装python有时候Script目录可能是空的,就是这么任性,卸掉重装吧╮(╯╰)╭
5.同时创建多个http请求,当请求数超过500左右时进程报错:
too many file descriptors in select()
先说结论:同时创建的网络请求数超过了系统的文件描述符数量限制(win=512,linux=1024),别挣扎了,多开几台物理机xjb搞吧
不服气的话可能会尝试这些办法:
a)修改进程可使用的文件描述符数量:
首先你要pip install pypiwin32
然后
import win32file
win32file._setmaxstdio(1024)
最后结论:没吊用,这个只能修改本进程的fd,aiohttp库最后调用操作系统的select()方法,这里并不能修改select()允许的fd数量(修改注册表的USERProcessHandleQuota也没有用哦)
b)既然select不行,那我就换epoll/iocp
首先你要装twisted库
然后这个库是用c++14标准写的,直接pip install twisted会提示:
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft VisualC++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
打开连接地址,发现要下一个vs装一下。喵喵喵?傻子才装vs,不然我直接用c++撸一个了还写毛的python
不想装vs,那就去https://www.lfd.uci.edu/~gohlke/pythonlibs/下twisted的安装包,然后pip一下就能用了
装上twisted库再撸一套,发现依然不能创建超过500个http请求哦╮(╯╰)╭
最后结论:没吊用
网友评论