了解如何架构改进在Heroku上运行的Python / Flask应用程序

时间:2013-10-13 04:16:00

标签: python heroku flask gtfs

上下文

我写了一个由

组成的简单服务
  • Python脚本
  • 在Flask Framework中运行
  • 主持Heroku - (目前正在运行1 dyno)

数据传输的机制有点独特

  • Something调用Heroku app
  • Heroku应用程序使用urllib2.urlopen调用Google-GTFS api,python脚本使用GTFS python模块解析此数据
  • 然后python返回(json.dumps)JSON

问题

我对这个服务进行了一次blitz.io测试,有30个并发用户,我得到了一堆超时问题。

heroku日志显示了一堆这些错误

2013-10-13T02:30:20.101085+00:00 heroku[router]: at=error 
    code=H19 desc="Backend connection timeout" method=GET path=myapppath myappurl fwd=ipaddress dyno=web.1 connect=5001ms service= status=503 bytes=

问题

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

摘自H19 Heroku error的文档:

  

路由器在尝试打开网络dyno的套接字5秒后收到连接超时错误。这通常是您的应用程序不堪重负并且无法及时接受新连接的症状。如果您有多个dynos,路由器将在记录H19并提供标准错误页面之前重试多个dynos。

你使用了多少个dynos?听起来你可能需要更多才能处理30个并发用户的负载。

根据您的应用程序,它可能也有助于拥有一个缓存层,以防止您必须为每个请求连接到GTFS服务。