【问题标题】:How to run a python script as a subprocess inside Google Cloud Function如何在 Google Cloud Function 中将 python 脚本作为子进程运行
【发布时间】:2020-02-15 08:20:20
【问题描述】:
import subprocess 
import os

def execute(): 
    code = "def Solution():\n\tprint('Hello')\n\nSolution()\n"
    f = open('/tmp/Solution.py','w')
    f.write(code+'\n')
    f.close() 
    s = subprocess.check_output("python /tmp/Solution.py", shell = True) 
    return s

我正在从云函数处理程序调用执行函数。这在本地工作,但在 gcloud subprocess.check_output 返回非零退出代码。

是不是因为gcloud运行环境找不到python解释器?在任何一种情况下,我怎么能做这样的事情?我在这里想念什么?我在日志中没有太多信息,所以我被卡住了。

谢谢

【问题讨论】:

  • 为什么在文件路径中使用反斜杠? Cloud Functions 运行 Linux,文件路径将使用正斜杠,例如/tmp/Solution.py

标签: python subprocess google-cloud-functions serverless


【解决方案1】:

您必须期望您的函数被部署到一个容器中,在您的情况下,该容器包括一个 Python 运行时。您不能假设您的云功能也包含一个外壳。因此不建议在你的python代码中使用subprocess

【讨论】:

  • subprocess.check_output("echo Hello", shell = True)。这行代码运行良好。问题仅出在 python 上。我使用的云函数确实有一个 python 运行时,所以我认为这应该也可以工作,但是缺少错误消息使得调试变得困难。
  • 我建议使用 Google Cloud Run。
猜你喜欢
  • 2019-07-23
  • 1970-01-01
  • 2020-06-12
  • 1970-01-01
  • 2021-05-14
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多