擅长:python、mysql、java
<p><code>os.popen</code>返回stdout上命令的输出。像这样的错误消息会传到stderr,所以你不会得到它。你知道吗</p>
<p>除此之外,欧斯波本正如<a href="https://docs.python.org/2/library/os.html#os.popen" rel="nofollow">the docs</a>所说的,它已被弃用。相反,使用<code>subprocess.check_output</code>:</p>
<pre><code>import subprocess
try:
# stderr=subprocess.STDOUT combines stdout and stderr
# shell=True is needed to let the shell search for the file
# and give an error message, otherwise Python does it and
# raises OSError if it doesn't exist.
response = subprocess.check_output(
"./update.sh", stderr=subprocess.STDOUT,
shell=True)
except subprocess.CalledProcessError as e:
# It returned an error status
response = e.output
</code></pre>
<p>最后,如果<code>update.sh</code>花费的时间超过几秒钟左右,则可能是芹菜所称的后台任务。现在整个命令必须在Django给出响应之前完成。但这与问题无关。你知道吗</p>