Python守护进程在程序执行卡在self._sslobj.do_handshake()时自动结束。

9 浏览
0 Comments

Python守护进程在程序执行卡在self._sslobj.do_handshake()时自动结束。

这个问题之前已经被问过,但是那是两年前的事了,我想知道在python 2.7.11中有关此问题是否有任何更新?\n基本上,我的程序会在几个小时内挂起,当我按下键盘中断时,会出现以下错误:\n File \"/usr/lib/python2.7/ssl.py\", line 579, in __init__\n self.do_handshake()\n File \"/usr/lib/python2.7/ssl.py\", line 808, in do_handshake\n self._sslobj.do_handshake()\n有人知道为什么会发生这种情况吗?正如前面提到的帖子中由Matt Vukas自我回答的那样,我扫描了这个帖子,但是我不明白首先出现了什么错误。我几周前开始学习python,这对我来说都是新的。\n就我记忆所及,这不是一个异常,所以不考虑try/catch。\n还有一件事我想提一下(可能重要,也可能不重要),就是这没有具体的模式,有时几天后才会发生。有时在重新启动程序后只有10分钟。\nURL在每次调用后都会改变。\n这是代码:\nusername = \"foobar\"\npassword = \"123456\"\nurl = http://api.example.com\ntry:\n r = requests.get(url, auth=(username, password))\nexcept requests.exceptions.ConnectionError:\n time.sleep(2)\n self.requests_exception_error(url)\n编辑:按照@Sasha Pachev的要求,这里是strace.out文件(数据库的最后一个条目在第128行,最后一个打印语句在第285行)程序在第430行冻结。\n当程序冻结时,python守护进程会自动结束。

0
0 Comments

根据以上内容,我们可以得出以下结论:

问题的出现原因是在SSL协商过程中,客户端在等待来自远程主机的回复,但是回复从未到达。造成这种情况可能有很多原因,需要进一步排查才能确定。

解决方法如下:

1. 在脚本运行时,通过使用tcpdump -s 65535 -w /tmp/port443.pcap port 443命令将端口443的数据包流量收集到PCAP文件中。

2. 使用ssldump -r /tmp/port443.pcap -d命令对PCAP文件进行解码。

3. 将输出的相关部分进行发布,以便进行进一步分析。

通过这些步骤,我们可以获得更多关于问题的相关信息,以便进一步排查和解决。

0