在Heroku中使用celery worker会导致超时

时间:2019-10-08 10:49:32

标签: python django heroku celery

我正在将Heroku用于运行在daphne服务器上的Django项目。而且我还有一个芹菜工人可以并行运行任务以减少响应时间。

下面是我的Procfile

web: daphne myproject.asgi:application --port $PORT --bind 0.0.0.0 -v 0
worker: celery worker -A myproject --loglevel=debug --concurrency=8

场景::我需要使用最近24个月的余额数据生成对帐单。

为此,我有两个端点

  
      
  • 获得平衡-获取24个月的余额(每个月都被视为一项任务,并且使用celery worker运行24项任务)
  •   
  • GENERATE STATEMENT-生成24个月数据的语句(此API在GET BALANCE API之后立即调用)
  •   

如果我为一家公司进行测试,则第一个API需要15到20秒。但是,如果我测试了2个或更多公司(使用负载测试),那么它会单独通过第一个公司,而其他公司由于 HEROKU 30秒超时问题

而失败

例如5家公司:

  • C1-需要15秒才能完成-通过
  • C2-需要27秒才能完成-通过
  • C3-需要43秒才能完成-超时
  • C4-需要48秒才能完成-超时
  • C5-需要55秒才能完成-超时

我认为问题是由于JOB排队和HEROKU超时引起的。但是在作业完成之前,我无法通过 GET BALANCE 呼叫将响应发送给客户端,因为下一秒我需要生成该语句。

此外,我尝试通过增加员工人数限制来进行尝试,但该限制最多可用于2到3家公司。

请以某种方式建议我,这样我就可以摆脱超时问题

0 个答案:

没有答案