针对特定请求延迟Django HttpResponse

时间:2013-03-25 19:53:59

标签: python django

我正在为强力登录尝试编写一个简单的解决方案。如果尝试失败,我需要在发送响应之前添加延迟。你们有什么建议为个别请求增加延迟?它必须是每个请求,以便服务于特定资源的线程不应受到下一个请求的影响。

感谢。

编辑: 根据{{​​3}}在Webfaction上运行Apache时,time.sleep会将下一个请求延迟到同一资源。

那么在这种情况下,什么可以替代time.sleep?

3 个答案:

答案 0 :(得分:1)

如果我错了,请打听我,但我认为每个线程一次只处理一个请求。因此,如果您想要一个缓慢的请求,只需在该线程中执行time.sleep,服务器将花费更长的时间来处理它而不会影响其他并发请求。

答案 1 :(得分:1)

如果您在线程服务器中延迟响应,您的服务将容易受到DOS攻击。攻击者可以立即发送可能的请求,并且所有线程都会立即睡觉......

如果来自同一IP的尝试次数太多,你最好问CAPTCHA。

更新:我会使用Twisted(或Tornado ,但我从未使用过它)和nginx(不是Apache)作为前端。您甚至可以同时使用Twisted和Django,但是您必须编写模仿Django auth和使用Twisted的会话的代码,将正确的数据写入数据库。

答案 2 :(得分:0)

Http是一种无状态协议。连接请求的唯一方法是将会话信息存储在客户端的某个位置。由于您无法控制客户端行为,因此最好的机会是在服务器端记录失败的登录尝试,并延迟这些帐户的登录例程。