构建可扩展的Heroku flask Web应用程序的最佳方法,它是python

时间:2015-07-07 01:12:58

标签: python heroku flask

顺便说一句。我正在使用Flask。

因此,当用户请求ex的特定URL时。 example.com/specificshit我需要检索各种API,从中计算统计数据,将它们返回给用户并将其存储在某个地方供以后使用。据我所知,直接方法的问题在于,这将使得使用暂停一段时间,直到完成所有计算。据我所知,我应该使用工作流程,这在heroku上应该更容易。但是在计算结果后如何将结果返回给用户?

似乎我的新手@python状态真的让我回到这里,因为似乎有很多东西我必须设置,我只是无法做到正确。那么有什么好的和简单的方法来构建这样的东西,以便应用程序在需要时保持可扩展性?很抱歉长时间的咆哮,并提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

所以,你在这里问的是排队。

这是做你正在谈论的最好的方式:

  • 在Celery中使用Amazon SQSRabbit MQ等排队经纪人。
  • 当用户访问需要大量计算的页面时,接受传入的请求,告诉celery异步运行任务,然后立即向用户呈现HTML页面。
  • 然后,用户将看到一个HTML页面,该页面通常应该有一些微调器,让用户知道正在进行计算。
  • 当你之前告诉celery运行你的任务时,它所做的是它向SQS / RabbitMQ发出了一条消息。
  • 然后你将在Heroku上运行一个工作进程,它接收来自SQS / RabbitMQ的消息,并运行一个函数来进行计算。
  • 完成这些计算后,此函数会将计算出的数据存储在数据库中,或者只是在某处向消息代理返回响应。
  • 然后你要么:在你的浏览器上通过私人URL(/ computation / results / xxx或其他东西)对这些数据进行一些AJAX代码,或者使用像websockets这样的东西直接将这些数据推送到Web浏览器你的服务器。