gpt4 book ai didi

python - Google App Engine - 一个项目中的多个yaml文件共享一个库

转载 作者:行者123 更新时间:2023-11-28 22:17:24 25 4
gpt4 key购买 nike

我想创建一个多服务应用程序引擎应用程序,使用此页面上显示的第一个图表。 https://cloud.google.com/appengine/docs/standard/python/configuration-files#an_example

我想使用第三方库,所以我在根目录下有一个lib文件夹,在根目录下有一个yaml。然后我想要一个名为 predict 的微服务。所以我在根目录下也创建了一个名为predict的文件夹,然后在这个文件夹下,我也想使用lib中的包编写py文件。

我的做法是这样的:

import os,sys,inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
vendor.add(os.path.join(parentdir, 'lib'))

如错误所述,这对我不起作用:

ValueError: virtualenv: cannot access /base/data/home/apps/f~project-name/lib: No such virtualenv or site directory

显然它对我不起作用,正确的方法是什么?

更新:Dan 的解决方案对我有用!因此,当我部署我的微服务预测时,我需要进入预测目录并进行部署。我认为这就是它找不到 lib 的原因。通过使用 bash 符号链接(symbolic link) lib 库。

ln -s ../lib/ ./lib

我解决了这个问题。

最佳答案

你面临的问题是每个服务只能访问自己的服务目录下的文件,也就是它的app.yaml文件所在的目录,它们不能访问app的根目录。

我的做法(我所有的服务都使用标准环境):

  • 在顶级应用程序目录中创建了一个 lib 目录,并在其中安装了我希望跨多个服务共享的每个包
  • 每个服务在应用程序的目录中都有自己的子目录和一个 lib 目录,其中:
    • 我安装了只有该服务需要的库(如果有的话)
    • 我从顶级 lib 目录对所需的共享库进行符号链接(symbolic link)

这是我的应用目录结构:

app_dir/
app_dir/dispatch.yaml
app_dir/cron.yaml
app_dir/index.yaml
app_dir/queue.yaml
app_dir/lib/
app_dir/lib/shared_lib_1/
app_dir/lib/shared_lib_2/
app_dir/lib/shared_lib_3/
app_dir/service1/
app_dir/service1/app.yaml
app_dir/service1/lib/shared_lib_1 -> ../../lib/shared_lib_1
app_dir/service1/lib/shared_lib_2 -> ../../lib/shared_lib_2
app_dir/service1/lib/service1_lib_1
app_dir/service2/
app_dir/service2/app.yaml
app_dir/service2/lib/shared_lib_2 -> ../../lib/shared_lib_2
app_dir/service2/lib/shared_lib_3 -> ../../lib/shared_lib_3
app_dir/service2/lib/service2_lib_1

无需摸索 lib 路径,我在每个服务中只有

vendor.add('lib')

查看相关内容:

关于python - Google App Engine - 一个项目中的多个yaml文件共享一个库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51417186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com