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

时间:2016-04-21 14:57:26

标签: python django amazon-ec2 celery slack-api

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

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

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

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

1 个答案:

答案 0 :(得分:0)

假设:

  • 您正在使用来自松弛的传出webhook,而不是实时消息传递API
  • 你并没有试图做出某种多重的问答式回答,其中每个问题与...之间的状态。答案需要保持。

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

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