我们的节点应用程序变得非常大,一个作业需要相当长的时间才能执行。我们使用cronjob运行此作业,但通过调用URL。现在Heroku有这个问题,因为这项工作需要30多秒才能完成。所以我们收到一个超时,然后它再次尝试立即执行它,直到我们的内存配额大约为300%并且应用程序崩溃。
现在我想解决这个问题。在本地,我们根本没有运行此脚本的任何问题。它需要大约一分钟(现在,但将来,如果我们有更多用户,可能需要更多时间)才能完成并且内存保持稳定。
现在在后台运行此脚本应根据https://devcenter.heroku.com/articles/request-timeout#debugging-request-timeouts
解决问题Overe here https://devcenter.heroku.com/articles/asynchronous-web-worker-model-using-rabbitmq-in-node#getting-started我读到了JackRabbit。但它似乎用于像RabbitMQ https://github.com/hunterloftis/jackrabbit
这样的系统所以我的问题是:在节点中有背景任务经验的人吗?可以而且我应该使用JackRabbit来完成我的后台任务,还是有更好的解决方案?我的后台任务只包含一个非常复杂的ExpressJS任务,这需要一些时间来执行....
答案 0 :(得分:0)
我是Heroku的Node.js平台所有者(我实际上写了你引用的网络工作者文章)。
您的用例听起来很适合调度程序:
它是cron类型工作的绝佳替代品。