【发布时间】:2015-01-30 14:30:29
【问题描述】:
所以我有一个 Web 服务(flask + MySQL + celery),我正在尝试找出在 Elastic Beanstalk 上将它部署到单独的 Web 服务器和 Worker 环境/层的正确方法。我目前通过在与 Web 服务器相同的实例上启动工作程序(使用this answer)来使其工作,但显然我想让工作程序在单独的自动缩放环境中运行。请注意,celery 任务依赖于主服务器代码(例如进行查询等),因此它们不能分开。本质上它是一个有两个入口点的应用程序。
我能想到的唯一方法是让代码/配置脚本检查一些环境变量(例如 ENV_TYPE = "worker" 或 "server")以确定是启动标准烧瓶应用程序还是启动 celery工人。 这里的另一个警告是,当我希望/期望它们同时部署时,我必须将我的代码“eb 部署”到两个单独的环境(服务器和工作者),因为它们都使用相同的代码库。
抱歉,如果之前有人问过这个问题,但我环顾四周,找不到任何东西,这让我感到惊讶,因为这似乎是一个常见的用例。
编辑:刚刚找到this 答案,它解决了我对部署两次的担忧(我想它在技术上部署一次然后更新两个环境,易于编写脚本)。但是我关于如何将应用程序引导到服务器与工作模式的问题仍然存在。
【问题讨论】:
-
您最终是如何进行部署的?同时部署到两个环境?您是否为 Celery 工作人员使用了 Web 服务器或工作人员?
-
我不喜欢这个解决方案变得多么老套,而且我的应用程序的性能要求现在非常低,所以我只是继续在主要流程旁边运行工作人员。抱歉,我知道这可能没有帮助
标签: python amazon-web-services celery amazon-elastic-beanstalk