【发布时间】:2010-12-05 02:09:29
【问题描述】:
我将this Django management command 用于我自己的目的。该脚本是一个简单的 while-loop 守护进程,它根据 a protocol 从 sys.stdin(第 152 行,command.handle())读取并将结果写入 sys.stdout。
我希望sys.stdin.read() 会阻塞直到它收到一些东西,但我发现当我运行这个脚本时,它会在发送或接收任何数据之前占用 100% 的 CPU。
-
sys.stdin.read(n)会屏蔽吗? - 如果不是,我怎样才能让这个守护进程更有礼貌?
-
time.sleep(s)可以安全使用,还是会错过输入或响应缓慢?
【问题讨论】:
-
如果它是从标准输入读取的,它是一个守护进程吗?
-
好问题。我想我的语言太松散了。
-
所以,总而言之,我做错了,当它需要由 ejabberd 服务器本身管理时,它作为一个新贵的守护进程运行。更大的问题,“sys.stdin.read() 会阻塞吗?”不过,仍然很有趣。 :)
-
我仍然不知道为什么守护进程的 CPU 运行得这么热,我可能永远也不会。