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