【问题标题】:How do I automate Google App Engine upload_data with --passin and subprocess.Popen?如何使用 --passin 和 subprocess.Popen 自动化 Google App Engine upload_data?
【发布时间】:2011-10-31 17:58:51
【问题描述】:

这是我所拥有的:

process = subprocess.Popen(["cmd.exe",
                            "/c"
                            "appcfg.py",
                            "upload_data",
                            "--config_file=..\\bulkloader.yaml",
                            "--filename=" + generateXmlFilename(kind),
                            "--kind=" + kind,
                            "--url=" + getTargetGaeUrl(),
                            "--application=" + getTargetGaeApplication(),
                            "--email=example@gmail.com",
                            "../"])

这可以按预期工作,但是,当我引入“--passin”时,我似乎无法将其正确输入标准输入。我尝试了以下方法:

file = open("upload.pass")
process = subprocess.Popen([..., "--passin"], stdin=file)

还有

process.stdin.write("myPassword")

我什至尝试过(在黑暗中拍摄)

process = subprocess.Popen([..., "--passin", "< upload.pass"])

您可能已经注意到我正在尝试在 Windows 7 机器上执行此操作。

这可能吗?

更新:

在发布此内容并以不同的格式阅读后,我意识到我并没有等待这个过程。

解决办法是:

file = open("upload.pass")
process = subprocess.Popen([..., "--passin"], stdin=file)
process.wait()

效果很好。我假设因为我没有等待 python 没有向子进程注入任何东西,因为我已经退出了。

【问题讨论】:

  • 您应该发布您的更新作为您自己问题的答案,以便其他人可以从您来之不易的智慧中受益。

标签: python google-app-engine process stdin bulkloader


【解决方案1】:

如果您发现自己正在添加代码来处理身份验证、错误等,您可能还希望将 gaedriver 作为一个库来使用 appcfg: http://code.google.com/p/gaedriver/

【讨论】:

    【解决方案2】:

    在发布此内容并以不同的格式阅读后,我意识到我并没有等待这个过程。

    解决办法是:

    file = open("upload.pass")
    process = subprocess.Popen([..., "--passin"], stdin=file)
    process.wait()
    

    效果很好。我假设因为我没有等待 python 没有向子进程注入任何东西,因为我已经退出了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-06
      • 2011-03-09
      • 2019-11-08
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 2020-01-01
      相关资源
      最近更新 更多