【问题标题】:Run a python command from a .yaml file从 .yaml 文件运行 python 命令
【发布时间】:2017-05-01 13:47:02
【问题描述】:

我有一个在本地工作的 python 项目,它在 UNIX 命令格式下运行:python main.py arg1 arg2 etc.

我想将我的文件夹导出到 Google App Engine,所以我做了一个小教程来让“Hello World”在我的应用程序上运行。我阅读了 app.yaml 文件,但似乎不知道如何将 app.yaml 添加到运行 Python 命令的项目中。

编辑:

runtime: python27
api_version: 1
threadsafe: true

command: ["/bin/sh", "-c"]
args: ["python webXMLPARSER.py www.reitmans.com 2016-12-01 2016-12-08"]

【问题讨论】:

  • 标准环境还是弹性环境?
  • @DanCornilescu 标准环境
  • 最好为 GAE 标准和灵活环境创建 SO 标签。

标签: python google-app-engine yaml google-cloud-platform


【解决方案1】:

首先,您必须指示运行一个 shell,然后将参数传递给 shell,例如 python something.py args1 args2。

command: bash -c "python something.py args1 args2"

你应该试试 Dockerfiles1,他们有更直观的运行逗号的方式:

CMD ["python", "something.py", "args1", "args2"] 

【讨论】:

  • 我收到错误:配置无效:对象类型 AppInfoExternal 的意外属性“命令”。
  • 编辑:你有一个简单的 .yaml 示例吗,我对 .yaml 文件很陌生。
  • 你有你的 .yaml 吗?你能更新这个问题吗?编辑了答案,你可以试试吗?
  • 答案已编辑。看起来很多代码都丢失了,当我看到其他 yaml 文件时,它们就像 20 行以上,但我只需要运行一个命令行。
  • 我认为您为 Web 解析器使用了错误的堆栈 (GAE)。解析器最好使用 Google Cloud Engine。我以为您使用的是 GCE 而不是 GAE。 Dockerfiles 和 yamls 在那里更灵活,而且更便宜。我不确定可能是什么错误,但我可以帮助您在 GCE 中部署它。
【解决方案2】:

简短的回答 - 你不能那样做。

现在是长篇。

GAE(标准)应用代码并非设计为作为独立应用运行。它只是一个配置文件和代码 sn-ps 的集合,旨在与 GAE 基础代码(live 或 SDK)一起工作和补充,以便作为应用程序运行。

要在本地运行应用程序,必须通过 SDK 的开发服务器进行,​​详情请参阅Using the Local Development Server

还有:

  • GAE 应用程序本质上是 Web 服务器应用程序,它们获取请求并返回响应,它们实际上并不执行任意 python cmds。您尝试的配置无效,请参阅app.yaml Reference

  • GAE 沙盒对应用程序的功能有很大限制,尤其是不允许启动其他进程。见The sandbox

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-17
    • 2020-03-31
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 2018-07-27
    相关资源
    最近更新 更多