Python deamon在程序执行挂起时自动结束
这是一个问题,但那是两年前的事了,我想知道在Python2.7.11中有没有关于这方面的更新?Python deamon在程序执行挂起时自动结束,python,python-2.7,api,ssl,Python,Python 2.7,Api,Ssl,这是一个问题,但那是两年前的事了,我想知道在Python2.7.11中有没有关于这方面的更新? 基本上,我的程序会挂起几个小时,当我执行键盘中断时,会出现以下错误: File "/usr/lib/python2.7/ssl.py", line 579, in __init__ self.do_handshake() File "/usr/lib/python2.7/ssl.py", line 808, in do_handshake self._sslobj.d
基本上,我的程序会挂起几个小时,当我执行键盘中断时,会出现以下错误:
File "/usr/lib/python2.7/ssl.py", line 579, in __init__
self.do_handshake()
File "/usr/lib/python2.7/ssl.py", line 808, in do_handshake
self._sslobj.do_handshake()
有人知道为什么会这样吗?正如Matt Vukas在前面提到的帖子中回答的那样,我知道,但我不明白错误首先是关于什么的。几周前我开始使用python,这对我来说是全新的
就我的记忆而言,这并不例外,因此try/catch
是不可能的。
还有一件事我想提一提(这可能很重要,也可能不重要),那就是这种情况没有具体的模式,有时会在几天后发生。在我重新启动程序10分钟后的某个时候。 URL在每次调用后都会更改 代码如下:
username = "foobar"
password = "123456"
url = http://api.example.com
try:
r = requests.get(url, auth=(username, password))
except requests.exceptions.ConnectionError:
time.sleep(2)
self.requests_exception_error(url)
编辑:根据@Sasha Pachev的要求(数据库的最后一个条目在行128
上一个打印语句在行285
),程序冻结在行430
当程序冻结python deamon时我从
strace
中看到的是,在SSL协商之后或期间的某个时刻,客户端正在等待远程主机的回复,而该回复从未出现。原因可能有很多,如果没有进一步的故障排除,很难判断。下一步:
- 脚本运行时,将端口443上的数据包流量收集到PCAP文件中(例如使用
)tcpdump-s 65535-w/tmp/port443.PCAP端口443
- 使用
ssldump-r/tmp/port443.pcap-d对其进行解码
- 发布输出的相关部分
curl
。正如我在问题中提到的,“问题”是完全随机的。我很确定问题不在于URL(URL是从文件中读取的,保存在MySQL数据库中,我从相同的URL恢复程序,执行被冻结)此外,程序每隔两个小时(如果相关的话)会进行大约1000次调用使用strace-tt-f-o/tmp/strace.out-s 1024-p$(pidof your_守护进程)
,确保/tmp或日志中有足够的磁盘空间的地方,用进程的实际名称或整个过程的实际名称替换守护进程,或者只使用pid
,收集数据,然后记录发生故障的时间,并在该时间前后仔细阅读strace
日志。如果问题没有变得明显,请将其发布到我们可以阅读的地方。@SashaPachev因为我正在运行python脚本,我将不得不用python的pid替换您的_守护进程,对吗?最可靠的方法是使用top
或ps
确定python的pid,然后使用-p找到的pid
<代码>-p$(python的pidof)
如果您有另一个python实例在运行,那么它可能是不明确的。