我可以将mod_python的会话与mod_pywebsocket一起使用吗?

时间:2012-11-19 01:17:35

标签: python websocket session-state mod-python mod-pywebsocket

我正在创建一个简单的网页游戏,该网页游戏使用网络套接字来流式更新其他所有内容的HTTP AJAX请求(例如登录系统,用户个人资料和& c)。不幸的是我对mod_python有点新鲜,但似乎我想使用Sessions类来跟踪访问者。唯一的问题是Session由于某种原因需要mod_python请求。有没有办法可以在mod_pywebsocket处理程序中使用这些会话,还是需要滚动自己的会话机制?

1 个答案:

答案 0 :(得分:0)

如果有人可以使用它,我发现mod_python的会话与mod_pywebsocket一起工作得很好。以下是需要注意的两个注意事项:

初始化通常,您使用mod_python请求构造mod_python Session对象。幸运的是,mod_pywebsocket的作者已经考虑到使Web套接字请求(您在web_socket_transfer_data参数中获得的请求)兼容。这意味着您可以像在mod_python中一样实例化Session(请参阅the docs示例)。这看起来很明显,但对我来说并非如此。如果你这样做会出错,那你就做错了。

会话锁要记住的另一件事是默认情况下锁定与给定ID关联的会话,并且锁定会持续该Session对象的生命周期。这意味着,如果您有两个使用来自同一主机的会话的Web套接字,则其中一个会有永久阻塞的危险。此外,文档指出这些互斥锁可能需要非平凡的系统资源。它们显然是为快速HTTP请求而设计的,而不是针对持久的面向连接的使用。

修复会话的一种方法是禁用锁定,但这可能不是一件明智的事情。我没有尝试过,但如果你尝试这些竞争条件,那就更好了。我所做的是创建我只需要很短时间的会话,然后在完成后分配None。显然with条款不适用于这些会话。同样,这并不是非常模糊,但如果你没有意识到幕后发生的事情,它可能会引起一些麻烦。