the5fire

关注Python、Django、Vim、Linux、Web开发、团队管理和互联网--Life is short, we need Python.


Django统计在线人数

作者:the5fire | 标签:     | 发布:2013-05-03 5:01 a.m. | 阅读量: 13456, 13002

这篇文章主要是分享一下我这个博客下方的那个当前在线人数部分的代码,其实是一个五分钟之内的统计,数据保存在memcache中。

整个逻辑很简单,每一个用户访问,我都会把用户的ip作为key放到memcache,然后有一个 online_ips 的key,用来存放所有的ip。

每次请求都会进行如下步骤,先取出 online_ips的所有值,然后再根据这个这个list来从memcache中取出依然存在的ip,然后再次存入 online_ips

具体实现来看代码:

.. code:: python

    if 'HTTP_X_FORWARDED_FOR' in request.META:
        ip = request.META['HTTP_X_FORWARDED_FOR']
    else:
        ip = request.META['REMOTE_ADDR']

    online_ips = cache.get("online_ips", [])

    if online_ips:
        online_ips = cache.get_many(online_ips).keys()

    cache.set(ip, 0, 5 * 60)

    if ip not in online_ips:
        online_ips.append(ip)

    cache.set("online_ips", online_ips)

这段代码是在middleware层的,展示在线人数的时候,只需要从cache中取出online_ips即可。

- from the5fire.com
----EOF-----

微信公众号:Python程序员杂谈


其他分类: