1
这是我的日志蟒蛇subprocess32与超时,overflowerror
File "/opt/ibm/db2-governor/helpers/utils.py", line 10, in run_cmd
output = proc.communicate(timeout = timeout)[0]
File "/opt/ibm/dynamite/python/lib/python2.7/site-packages/subprocess32.py", line 927, in communicate
stdout, stderr = self._communicate(input, endtime, timeout)
File "/opt/ibm/dynamite/python/lib/python2.7/site-packages/subprocess32.py", line 1713, in _communicate
orig_timeout)
File "/opt/ibm/dynamite/python/lib/python2.7/site-packages/subprocess32.py", line 1786, in _communicate_with_poll
ready = poller.poll(self._remaining_time(endtime))
OverflowError: Python int too large to convert to C lon
使触发此代码是
output = proc.communicate(timeout = timeout)[0]
超时设置为20,出现这种情况intermitently(几乎没有,但它发生) ,即时通讯使用python 2.7.11与subprocess32库,这是一个Python的错误?
好吧,我检查subprocess32.py,行是这样的
endtime = time.time() + timeout
ready = poller.poll(self._remaining_time(endtime))
所以基本上时间戳太大,转换成C INT,有什么我可以做,以解决这个问题?
当“!如果没有数据或proc.poll()=无:”还杀死进程“?如果不是proc.poll()”应该只是 – cakester
common trap:'proc.poll()'可以返回返回码,它可以是0.所以它不能结束。但我认为我的解决方案是不正确的:'read'被阻止。所以暂停将不起作用。让我编辑。 –
概念是正确的,我通过接受答案接受概念,代码我必须重写反正,所以我不知道D = – cakester