【问题标题】:Is it feasible to run multiple processeses on a Heroku dyno?在 Heroku dyno 上运行多个进程是否可行?
【发布时间】:2012-07-02 00:46:36
【问题描述】:

我知道 Heroku 平台的内存限制,并且我知道将应用程序分离为 web 和 worker dynos 更具可扩展性。但是,出于测试目的,我仍然希望在 Web 进程旁边运行异步任务。 Dynos 很昂贵,我想在 Heroku 提供的免费实例上制作原型。

在与 web 进程相同的 dyno 中将新作业作为进程或子进程生成是否有任何问题?

【问题讨论】:

    标签: python heroku subprocess worker


    【解决方案1】:

    在较新的 Cedar 堆栈上,生成多个进程没有问题。每个 dyno 都是一个虚拟机,除了内存和 CPU 使用(我认为大约 512 MB 内存和 1 个 CPU 内核)之外没有特别的限制。遵循某些堆栈(例如 Python)的较新安装说明将导致配置具有开箱即用的多个(Web 服务器)进程。

    安装在 web dynos 上的软件可能会因您使用的 buildpack 而异;如果您的子流程需要特殊软件,那么您可能必须将其与您的应用程序捆绑在一起,或者(更好地)推出您自己的 buildpack。

    在这一点上,我通常会提醒您,强烈建议使用适当的任务队列系统在工作人员 dynos 而不是 web dynos 上运行异步任务,但听起来您已经知道这一点。请记住,只有一个 Web dyno 的帐户(通常这意味着“免费”帐户)将在一个小时左右未收到任何 Web 请求后使该 dyno 停止运行,并且在该 dyno 上运行的任何后台进程时间必然会被扼杀。拥有多个网络 dyno 的帐户不受此限制。

    【讨论】:

    • 我对 dyno 空闲的解决方法是让其中一个 Web 进程自动锁定数据库对象,然后检查 worker 是否正在运行,如果没有,则启动它。
    猜你喜欢
    • 2013-06-28
    • 2017-09-29
    • 1970-01-01
    • 2015-01-05
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    相关资源
    最近更新 更多