gpt4 book ai didi

python - 将相同的应用程序/代码部署到 Elastic Beanstalk 服务器和工作环境的正确方法是什么?

转载 作者:太空狗 更新时间:2023-10-30 01:22:01 24 4
gpt4 key购买 nike

所以我有一个 Web 服务(flask + MySQL + celery),我试图找出将它部署在 Elastic Beanstalk 上的正确方法,并将其部署到单独的 Web 服务器和工作环境/层中。我目前通过在与 Web 服务器相同的实例上启动工作人员(使用 this answer )来让它工作,但显然我想让工作人员在单独的自动缩放环境中运行。请注意, celery 任务依赖于主服务器代码(例如进行查询等),因此它们不能分开。从本质上讲,它是一个具有两个入口点的应用程序。

我能想到的唯一方法是让代码/配置脚本检查一些环境变量(例如 ENV_TYPE = "worker"或 "server")以确定是启动标准 flask 应用程序还是 celery worker 。这里的另一个警告是,当我希望/期望它们同时部署时,我必须将我的代码“eb 部署”到两个独立的环境(服务器和工作程序),因为它们使用相同的代码库。

如果之前有人问过这个问题,我深表歉意,但我环顾四周却找不到任何东西,这让我感到惊讶,因为这似乎是一个常见的用例。

编辑:刚刚找到this答案,这解决了我对部署两次的担忧(我猜它在技术上部署一次然后更新两个环境,很容易编写脚本)。但我关于如何将应用程序引导至服务器与工作模式的问题仍然存在。

最佳答案

关于引导,如果您为 Elastic Beanstalk 环境 ( docs here ) 设置了环境变量,那么当您使用脚本重新部署代码时,您无需再次接触它。如果你创建一个新的环境,你只需要添加环境变量。

因此,在启动时,您只需在 Python 中检查该 ENV 变量,然后从那里引导并加载您需要的内容。

我的偏好不是通过指定“worker”或“server”来创建枚举,而是为环境变量做一个 bool 值,如 ENV_WORKER=1 或其他。它将消除打字错误的可能性并且更易于阅读。

if os.environ.get('ENV_WORKER') is not None:
# Bootstrap worker stuff here
else:
# Specific stuff for server here

关于python - 将相同的应用程序/代码部署到 Elastic Beanstalk 服务器和工作环境的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27247808/

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