【问题标题】:Running multiple functions in parallel in Google App Engine (Python)在 Google App Engine (Python) 中并行运行多个函数
【发布时间】:2021-06-06 19:20:34
【问题描述】:

我正在尝试在我的 Google App Engine 上并行运行多个功能。目前,我正在使用多处理,但它似乎不起作用,因为每当我通过 API 调用运行以下命令时,它似乎都无法引导:

from multiprocessing import Pool
result_objs = []
with Pool(processes=3) as pool:
    df1 = pool.apply_async(function1, (input_postcode, input_category1))
    df2 = pool.apply_async(function2, (input_postcode, input_category2))
    df3 = pool.apply_async(function3, (input_postcode, input_category3))
    result_objs.append(df1)
    result_objs.append(df2)
    result_objs.append(df3)
    results = [result.get() for result in result_objs]

是因为GAE只有1个CPU吗?是因为多处理库不适用于 GAE 吗? Google 是否为多处理提供等效库? 我看过以下谷歌图书馆,但不太确定如何在我的案例中应用它?

from google.appengine.api import taskqueue

【问题讨论】:

    标签: python google-app-engine multiprocessing


    【解决方案1】:

    单个 CPU 并不意味着它只能处理一个进程。无论如何,有问题的 CPU 是一个虚拟 CPU。

    根据this SO answer,有一些资源暗示多进程处理在灵活上可用,但在标准上不可用。 Gunicorn 用于为您的应用程序的多个实例提供服务,每个实例都在单个 GAE 实例上的单独进程中,因此至少在 GAE 实例级别上,多处理确实有效。我不能 100% 确定它是否适用于每个 Gunicorn 应用实例...

    您的实际 GAE 日志是怎么说的?

    您正在运行哪种风格的 GAE?弹性还是标准?

    【讨论】:

    • 是的,它是灵活的运行时:自定义环境:flex 入口点:gunicorn -c gunicorn.conf.py -b :$PORT main:app --timeout 220 runtime_config: python_version: 3.6
    猜你喜欢
    • 1970-01-01
    • 2019-12-15
    • 2023-03-15
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    相关资源
    最近更新 更多