我正在构建一个 python/flask 网络应用程序,除其他外,它允许用户通过 xmpp 聊天。我使用 slimxmpp 来完成这项工作,它具有事件驱动的结构。当收到消息时,xmpp 实例将运行一个定义为处理传入消息的方法。
因此,每个活动用户都需要运行一个线程来监听传入的消息。我的问题是,我如何在heroku上实现这一点?
正如heroku 所描述的那样,我不能真正将python-rq 用于背景工作。假设用户开始聊天,然后我们可以将“xmpp 侦听”作业排入队列以执行。然后工作人员检索作业,并开始侦听传入消息。工作人员在聊天结束之前不会返回,从而阻塞了其他聊天用户的队列。您可以为每个聊天用户配备一个工作人员,但这会非常昂贵(考虑到 heroku 对工作进程的收费)。
我想我需要的是一个作业队列,工作人员可以在其中为该作业启动一个线程,然后在第一个作业完成之前从队列中执行另一个作业。然后,单个工作人员可以一次侦听许多用户的传入消息。
这可能吗?或者我应该如何在heroku上这样做?