【问题标题】:How to run a subprocess inside Google Cloud Function?如何在 Google Cloud Function 中运行子进程?
【发布时间】:2019-10-29 10:40:06
【问题描述】:

我想在我的云函数中运行一个子进程来触发写入外部文件的数据流管道。

import base64
import subprocess

def hello_pubsub(event, context):

    if 'data' in event:
        name = base64.b64decode(event['data']).decode('utf-8')

    else:
        name = 'World'
    print('Hello {}!'.format(name))
    var = subprocess.run(["python", "./defaultTrigger.py", "--input_topic", " projects/my_project/subscriptions/sub1" ,"--output_topic", "projects/my_project/topics/topic2"])

Ps:我的数据流管道从 sub1 读取并写入 topic2。

我的云功能是由 pubsub 触发的。

CompletedProcess(args=['python', '...', ... ] , 返回码=1

【问题讨论】:

  • Cloud Functions 是一个托管运行时,您无法执行此操作。您可能想查看 Cloud Run,它在许多方面类似于 Cloud Functions,但它运行您构建的容器。您可能可以做您在 Cloud Run 中要求的那种事情。

标签: python-3.x google-cloud-platform subprocess google-cloud-functions google-cloud-dataflow


【解决方案1】:

我回复你here

另一部分是您希望在 Function 中执行子进程并在此子进程中调用“python”。请记住,您处于无服务器架构中,您不知道底层服务器、操作系统和平台是什么。如果调用被接受,执行子进程 python 可能会导致意外的事情(python 2 或 3?哪些依赖项?...)。实际上,您需要为请求处理时间付费。如果你 fork 进程并运行后台线程,那么计费是不公平的。这就是为什么禁止进行这种操作的原因。我建议您重新设计您的应用程序

【讨论】:

    猜你喜欢
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多