使用 Python Slack 机器人一次为多个用户提供服务



我有一个用Python编写的机器人,运行在Amazon EC2上,以Django为框架。机器人的最终目标是同时与同一 Slack 团队中的多个用户保持对话。据我了解,亚马逊将处理Slack团队之间的承重,但我试图弄清楚如何在单个Slack中管理负载。

现在,我的机器人坐在一个繁忙的循环中,等待单个用户响应。我一直在对此进行一些研究 - 芹菜是适合这项工作的工具吗?我应该将每个对话拆分为单独的线程/任务,还是让调度员处理新消息?有没有办法让 Slack 发送中断,或者我是否陷入了 while 循环?

感谢您的任何帮助/指导!我对此很陌生。

编辑:我设法通过实现与每个用户相关的"对话"对象列表来解决此问题。这些对象保存每个聊天的状态,以便机器人可以在用户再次发送消息时从中断的位置继续。

假设:

  • 您使用的是来自 Slack 的传出 Webhook,而不是实时消息传递 API
  • 你不是在尝试做某种多问答,其中需要维护每个问题和答案之间的状态。

跳过所有 Django 的内容,只使用 AWS Lambda 来响应用户请求。这仅适用于相当简单的"MyBot:do_something_for_me"风格的东西,但它对我们来说效果很好。由于没有 ec2、没有 rds、易于部署等,因此也更容易管理。只需确保为每个 Lambda 请求设置合理的时间限制即可。根据我的经验,3 秒通常足够了,除非您有更大的脚本。

如果你真的真的必须保持所有这些状态,那么你最好只是在 Flask 中编写一些快速的东西,而不是完成 django 的所有设置。然后,您将不得不处理任何Web服务的所有部署,自动扩展,备份僵化,但是如果您需要它,那么您需要它=)

相关内容

  • 没有找到相关文章

最新更新