小编Mic*_*ler的帖子

从网络连接读取时进程无限期挂起

对以下内容的更新:

我在不同数据中心的 Debian 虚拟机上的不相关脚本上遇到了类似的问题。

这看起来很像这里描述的问题(就像问这个问题的人一样,我没有在服务器前配置代理)。

与以下描述的主要区别在于,当我附加到挂起的进程时,我看到的是对recvfrom而不是的调用read

$ strace -p 17527
Process 17527 attached - interrupt to quit
recvfrom(3, 
Run Code Online (Sandbox Code Playgroud)

然而,Python 并没有任何被代理的印象:

>>> import os; print os.getenv("HTTP_PROXY"), os.getenv("http_proxy")
None, None
Run Code Online (Sandbox Code Playgroud)

所以我还是很难过。可悲的是,链接的问题也没有最终答案。

(我也想知道这个问题是否相关,但 S3 似乎不太可能不尊重Connection: close标题。)


我有几个 Debian(Wheezy、x86_64)服务器都表现出以下行为:

所有服务器都有一组 cron 作业,其中包括从 S3 中提取数据。这些通常运行良好,但偶尔会ps aux显示一些小时或几天前开始的作业仍在运行,并且没有完全完成。

通过strace -p <pid>显示检查它们,在所有情况下,该进程都挂在读取命令上。比如我刚才查的一个进程的输出是:

$ strace -p 12089
Process 12089 attached - interrupt to quit
read(5, 
Run Code Online (Sandbox Code Playgroud)

检查打开的文件描述符给了我这个:

$ sudo lsof -i | grep 12089
python  12089 …
Run Code Online (Sandbox Code Playgroud)

linux python svn mac-osx

7
推荐指数
1
解决办法
8124
查看次数

标签 统计

linux ×1

mac-osx ×1

python ×1

svn ×1