构建可扩展的 Heroku 烧瓶 Web 应用程序及其适用于 python 工作的最佳方法



BTW。我在用烧瓶

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

我的新手@python状态似乎真的让我很头疼,因为我似乎有很多事情需要设置,但我就是做不好。那么,有什么好的、简单的方法来构建这样的东西,以便在需要时保持应用程序的可扩展性呢?很抱歉你的长篇大论,感谢你提前提供的帮助。

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

这是做你所说的最好的方法:

  • 使用排队代理,如Amazon SQS或Rabbit MQ with Celery
  • 当用户访问需要大量计算的页面时,接受传入的请求,告诉芹菜异步运行任务,然后立即向用户呈现HTML页面
  • 然后,用户将看到一个HTML页面,该页面通常应该有某种微调器,让用户知道正在进行计算
  • 当您之前告诉芹菜运行您的任务时,它所做的是向SQS/RabbitMQ发送一条消息
  • 然后,您将在Heroku上运行一个工作进程,该进程接收来自SQS/RabbitMQ的消息,并运行一个函数来进行计算
  • 一旦这些计算完成,此函数将把计算出的数据存储在数据库中,或者只在某个地方向消息代理返回一个响应
  • 然后,您可以:在浏览器上通过私人URL(/computers/results/xxx或其他(对这些数据进行AJAX代码轮询,或者使用类似websocket的东西将这些数据从服务器直接推送到网络浏览器

最新更新