【问题标题】:Error in testing flask web app using Cloud SDK | Google Cloud on local system使用 Cloud SDK 测试烧瓶 Web 应用时出错 |本地系统上的 Google Cloud
【发布时间】:2020-01-04 02:27:40
【问题描述】:

我正在使用谷歌应用引擎部署我的烧瓶网络应用程序,为了实现这一步,我按照以下步骤操作

  1. 为应用程序创建代码(基于 Web)
  2. 创建一个 lib 文件夹,使用 requirements.txt 文件安装所有软件包
  3. 创建了 appengine_config.py,其中添加了 lib 文件夹。
  4. 创建文件 app.yaml 以在本地系统上测试应用程序,然后再部署到 google 应用引擎上。

我成功完成了这 4 个步骤。完成这些步骤后,

我运行以下命令

/usr/lib/google-cloud-sdk/bin/dev_appserver.py --admin_port=9000 --port=9999 app.yaml

结果,我发现谷歌应用引擎在本地服务器上运行成功。请参阅here 的截图,但是当我尝试在本地服务器的端口 9999 上运行代码时,出现以下错误

  import multiprocessing
  File "/usr/lib/python2.7/multiprocessing/__init__.py", line 65, in <module>
    from multiprocessing.util import SUBDEBUG, SUBWARNING
  File "/usr/lib/python2.7/multiprocessing/util.py", line 41, in <module>
    from subprocess import _args_from_interpreter_flags
ImportError: cannot import name _args_from_interpreter_flags

为了解决这个错误,我在互联网上搜索了这个错误并得出了以下结论

“你不能在 appengine 上使用多处理。多处理是为了 为并行创建和协调子进程。 这不是 appengine 上的选项。 Appengine 还有其他设施,例如 异步方法、任务队列和后端(可以使用传统的 线程)。”

根据我在互联网上的研究,上述错误是由多处理和 subprocess.py 引起的,谷歌云引擎不支持。

我担心的是,如果这与我理解的完全一样,那么解决这个问题的方法是什么,因为这不会让代码部署在谷歌云引擎上。

高度赞赏任何想法或解决方案。

【问题讨论】:

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


    【解决方案1】:

    关于您似乎正在使用的 App Engine Standard,您得出的结论是绝对正确的(基于您遇到的错误)。

    由于其实施方式,App Engine Standard does not allow for multiprocessing。您也可以查看此Google Groups post 了解更多背景信息。

    或者,您可以将 Python 运行时与 App Engine Flex 结合使用。该运行时使用 Gunicorn,它使用 workers to handle requests。使用 App Engine Flex,您将能够为您的应用程序 configure the number of CPU cores

    请记住 App Engine Flex will incur costs based on usage 而不是实例小时数。

    【讨论】:

    • 非常感谢您分享重要信息。我会尝试这些选项。
    猜你喜欢
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 2020-11-02
    • 2015-07-14
    • 1970-01-01
    • 2014-07-21
    相关资源
    最近更新 更多