我正在尝试执行以下行
class UserMailer < ActionMailer::Base
def welcome_email(user)
recipients user.email
from "test@gmail.com"
subject "Test Mail"
sent_on Time.now
body "Welcome to Our System"
content_type "application/pdf"
end
end
在python中。在shell终端中运行此行时,它可以正常工作。但是,我试图通过使用以下行在python脚本中运行它。
gsutil -m rsync s3://input gs://output
但是它永远挂着。它输出以下内容:
subprocess.Popen(["gsutil", "-m", "rsync", "s3://input", "gs://output"])
bash命令成功打印:
Building synchronization state...
Starting synchronization...
文件显示在我的gs存储桶中
答案 0 :(得分:2)
我猜这是因为最后两行可能是写入stderr而不是stdout的。您可以尝试使用对Popen
的调用作为上下文管理器,然后再调用communicate()
来读取输出流吗?
proc = subprocess.Popen(["gsutil", "-m", "rsync", "s3://input", "gs://output"])
try:
outs, errs = proc.communicate(timeout=15)
# now you can do something with the text in outs and errs
except TimeoutExpired:
proc.kill()
outs, errs = proc.communicate()