这两天一直在学习Tornado框架,看了其github项目中自带的简单的基于websocket的聊天程序实现,萌生了在此基础上改写的念头,原因很简单:如果真正在生产环境使用Tornado server,一般需要开启多个tornado进程,前端可以由Nginx来负载均衡,这样的话,其demo中利用WebSocketHandler类变量(一个Set集合)来保存所有的WebSocket对象就无法满足多进程共享该数据的需求,于是想到了可以使用Redis来解决这个问题。
我的想法很简单:在Redis中维护一个哈希表,其每个域(field)为在线User的ID,域的值(value)为对应该User的WebSocket实例。但是问题出现了:每当一个新用户上线,我需要将新生成的WebSocket对象插入到Redis中去,由于需要插入的值为WebSocket对象,我该如何进行保存呢?(使用pickle序列化尝试貌似不可行,即使可以,之后反序列化出来的对象应该也不是原先的WebSocket对象了)
可能我的思路本身就有问题,所以烦请各位同学指点迷津下,多谢~
我的想法很简单:在Redis中维护一个哈希表,其每个域(field)为在线User的ID,域的值(value)为对应该User的WebSocket实例。但是问题出现了:每当一个新用户上线,我需要将新生成的WebSocket对象插入到Redis中去,由于需要插入的值为WebSocket对象,我该如何进行保存呢?(使用pickle序列化尝试貌似不可行,即使可以,之后反序列化出来的对象应该也不是原先的WebSocket对象了)
可能我的思路本身就有问题,所以烦请各位同学指点迷津下,多谢~