设置:
- Tornado HTTP/WebSocket 服务器。WebSocketHandler 对来自客户端的消息做出反应(例如,将它们放入作业队列中)
- 将作业发送到不同组件的 beanstalk 作业队列
- 其他一些通过 beanstalk 进行通信的组件,但这些与我的问题无关。
问题:
- WebSocketHandler 应该对作业做出反应,但如果他正在监听 beanstalk,它会阻塞。作业可以是例如“将数据 xy 发送到客户端 xyz”
如何很好地解决这个问题?我的第一种方法是在一个单独的线程中运行一个作业队列侦听器,其中包含一个腌制 WebSocketHandler 的列表。所有内容都应存储在 redis-db 中。由于 WebsocketHandler 不能被腌制(而且这种方法似乎很丑陋),我正在寻找另一种解决方案。
有任何想法吗?