繁体   English   中英

使用Python Slack bot一次为多个用户提供服务

[英]Serving multiple users at once with a Python Slack bot

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

现在,我的机器人坐在忙碌的循环中等待单个用户做出响应。 我一直在研究这个问题 - 芹菜是适合这项工作的合适工具吗? 我应该将每个会话拆分为单独的线程/任务,还是让调度程序处理新消息? Slack是否有办法发送中断,或者我是否仍然坚持使用while循环?

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

编辑:我设法通过实现与每个用户有关的“对话”对象列表来解决这个问题。 这些对象保存了每个对话的状态,因此当用户再次发送消息时,机器人可以从中断处继续。

假设:

  • 您正在使用松弛的传出webhook,而不是Real Time Messaging API
  • 你不是试图做一些多问答案的回答,其中每个问题和答案之间的状态需要保持。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM