一次抓虫引发的对python导入机制的初步认识
前段时间因为生产上连接数的问题,手机被告警信息一波一波地袭击。问题的现象是,项目中每个进程都有一个全局的连接对象,一个对象对应一个socket连接。从输出日志可以看出这个对象有正常的建立连接和断开连接过程。但奇怪的是,通过netstat查看连接数,却超过了进程数,说明进程的连接对象并不是进程内全局唯一的。
于是给日志加上了线程id,再次运行发现,同一个线程(该项目使用的是多进程单线程)中对该连接对象进行了两次初始化,并且这两次初始化的对象id(通过内置的id()方法得出)不同。说明该连接对象并非进程内全局唯一的。
可是这是为什么呢???
这个连接对象是作为模块内全局对象定义的,并且被同一