如何在Python中处理松弛app中的许多用户?如何使用多个令牌?

我正在做一个懒散的机器人 . 我一直在使用python slackclient库来开发机器人 . 它与一个团队合作很好 . 我正在使用Flask Webframework .

很多人通过"Add to Slack"按钮将应用程序添加到松弛状态,我得到他们的 bot_access_token .

现在 how should I run the code 有这么多Slack令牌 . 我应该将它们存储在列表中,然后使用for循环遍历所有令牌!但这并不好,因为我可能无法处理我收到的同步消息或事件或"its a good way" . 如果不是其他任何方式?

回答(2)

2 years ago

如果你需要每个团队打开一个WebSocket . 是的,您通常会使用循环来 Build 这些连接 . 根据 slackclient 的工作方式,您可能需要在单独的线程或进程中启动每个方法 .

EDIT :如下面的评论所述,线程优先于多个进程 . 更好的是使用比线程更轻的东西,但是在你学习的这一点上,我不会在这里过度优化 .

SECOND EDIT :看起来 python-slackclient 具有非阻塞读取,因此您甚至不需要使用线程 . 例如 . 以下内容不会阻止:

for team in teams:
    for event in team.client.rtm_read():
        # process the event for that team

(这假定某种包含 SlackClient 实例的"team"对象 . )

2 years ago

你确实需要

  • 存储每个团队令牌 . Please remember to encrypt it

  • 当团队安装您的应用时,请创建新的RTM连接 . 当您的应用程序/服务器重新启动时,遍历所有团队,为每个团队打开RTM连接

  • 每个连接都将从该团队和该团队接收事件 . 您不会收到同一连接上的所有通知

(也许你来自Facebook Messenger机器人背景,所有通知都来自同一个webhook?Slack的情况并非如此)