Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python deamon在程序执行挂起时自动结束_Python_Python 2.7_Api_Ssl - Fatal编程技术网

Python deamon在程序执行挂起时自动结束

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

这是一个问题,但那是两年前的事了,我想知道在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.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对其进行解码
  • 发布输出的相关部分

在发出请求之前记录URL,并查看是否可以将问题隔离到特定URL。一旦你到了那里,你也许能够创建一个最小的、完整的、可验证的例子,我们可以从那里开始。@Sasha Pachev我确实记录了变量,甚至调用了
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实例在运行,那么它可能是不明确的。