我知道 Heroku 平台的内存限制,并且我知道将应用程序分成 web 和 worker dynos 更具可扩展性。但是,出于测试目的,我仍然希望在 Web 进程旁边运行异步任务。Dynos 很昂贵,我想在 Heroku 提供的免费实例上进行原型设计。
在与 Web 进程相同的测功机中生成新作业作为进程或子进程是否有任何问题?
我知道 Heroku 平台的内存限制,并且我知道将应用程序分成 web 和 worker dynos 更具可扩展性。但是,出于测试目的,我仍然希望在 Web 进程旁边运行异步任务。Dynos 很昂贵,我想在 Heroku 提供的免费实例上进行原型设计。
在与 Web 进程相同的测功机中生成新作业作为进程或子进程是否有任何问题?
在较新的 Cedar 堆栈上,生成多个进程没有问题。每个 dyno 都是一个虚拟机,除了内存和 CPU 使用(我认为大约 512 MB 内存和 1 个 CPU 内核)之外没有特别的限制。遵循某些堆栈(例如 Python)的较新安装说明将导致配置具有开箱即用的多个(Web 服务器)进程。
安装在 web dynos 上的软件可能会根据您使用的 buildpack 有所不同;如果您的子流程需要特殊软件,那么您可能必须将其与您的应用程序捆绑在一起,或者(更好地)推出您自己的 buildpack。
在这一点上,我通常会提醒您,强烈建议使用适当的任务队列系统在工作人员测功机而不是 Web 测功机上运行异步任务,但听起来您已经知道这一点。请记住,只有一个 Web dyno 的帐户(通常这意味着“免费”帐户)将在一个小时左右未收到任何 Web 请求后使该 dyno 停止运行,并且任何后台进程在该 dyno 上运行时间必然会被扼杀。具有多个 web dyno 的帐户不受此限制。