1.在用netstat -lpt查看服務器監(jiān)聽的所有端口以及對應的進程id時修陡,如果是root啟動的進程寞冯,而用非root賬號查看,是看不到進程id的
2.一般非root權(quán)限的進程不能綁定80端口(http請求的默認端口),兩種方法解決:
a)以root權(quán)限啟動程序
b)修改執(zhí)行文件權(quán)限
chown root:root xxx
chmod 777 xxx
chmod u+s xxx
3.Python3.4以上才支持asyncio,3.5.3以上才支持aiohttp
4.安裝python有時候Script目錄可能是空的饼疙,就是這么任性,卸掉重裝吧╮(╯╰)╭
5.同時創(chuàng)建多個http請求慕爬,當請求數(shù)超過500左右時進程報錯:
too many file descriptors in select()
先說結(jié)論:同時創(chuàng)建的網(wǎng)絡請求數(shù)超過了系統(tǒng)的文件描述符數(shù)量限制(win=512,linux=1024)窑眯,別掙扎了屏积,多開幾臺物理機xjb搞吧
不服氣的話可能會嘗試這些辦法:
a)修改進程可使用的文件描述符數(shù)量:
首先你要pip install pypiwin32
然后
import win32file
win32file._setmaxstdio(1024)
最后結(jié)論:沒吊用,這個只能修改本進程的fd磅甩,aiohttp庫最后調(diào)用操作系統(tǒng)的select()方法肾请,這里并不能修改select()允許的fd數(shù)量(修改注冊表的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
打開連接地址,發(fā)現(xiàn)要下一個vs裝一下隔显。喵喵喵却妨?傻子才裝vs,不然我直接用c++擼一個了還寫毛的python
不想裝vs括眠,那就去https://www.lfd.uci.edu/~gohlke/pythonlibs/下twisted的安裝包彪标,然后pip一下就能用了
裝上twisted庫再擼一套,發(fā)現(xiàn)依然不能創(chuàng)建超過500個http請求哦╮(╯╰)╭
最后結(jié)論:沒吊用