短版

我正在用Python开发一个Facebook Messenger聊天机器人(用FBMQ library) . 我的应用程序在Heroku(Hobby Tier)上运行,附带了Heroku postgresql数据库 .

How should I setup my Heroku application (tier, dynos, database...) to make my chatbot run smoothly when dozens of people interact with it simultaneously ?


长版

我的聊天机器人主要是一个Flask服务器,它捕获来自Messenger Webhook的消息 . 它大致是数字纸张追逐 . 因此,它不是很聪明,但告诉用户一个故事,给他们提供线索,并在下一个谜语之前检查他们的答案 . 每次用户发送消息时,我都会执行以下步骤:

  • 使用发件人的PSID,我在数据库中找到了他的msg_id . msg_id是一种用户变量,用于指示我在故事中的进展(在脚本中) .

  • 根据他的msg_id我执行了一些操作(例如:用Dialogflow API检查他的答案,将他的答案保存在数据库中等)

  • 然后我用下一步的更新他的msg_id .

我不是专业开发人员,我不知道当多个请求到来时Flask服务器如何运作 . 此外,我不知道Heroku应用程序如何在这种情况下起作用 . 我希望我的应用程序能够处理和回答20个同时请求 .

除此之外,我想优化我的应用程序,以便快速回答单个请求 . Heroku日志给我很长的“服务”时间(通常在500到1000毫秒之间,但有时在1000到3000毫秒之间) .

我阅读了关于dynos和app Performance的Heroku文档,但我不知道我是否需要超过1个Dyno才能同时回答和处理多个请求?