【问题标题】:How to get remaining timeout in Django cache如何在 Django 缓存中获取剩余超时时间
【发布时间】:2015-08-13 14:49:08
【问题描述】:

我在允许用户添加文章的视图上限制发布请求。 我目前正在使用这样的装饰器:

def throttle_post(func, duration=60):
    def inner(request, *args, **kwargs):
        if request.method == 'POST':
            remote_addr = request.META.get('HTTP_X_FORWARDED_FOR') or \
                          request.META.get('REMOTE_ADDR')
            key = '%s.%s' % (remote_addr, request.get_full_path())
            if cache.get(key):
                messages.add_message(
                request, messages.ERROR, 'you cant add articles so fast, try waiting another {} seconds.format(remaining))
                return redirect(request.META.get('HTTP_REFERER'))
            else:
                cache.set(key, 1, duration)
        return func(request, *args, **kwargs)
return inner

我想在消息中显示超时还剩多少秒。

谢谢

【问题讨论】:

  • 你用什么客户端来做memcached?
  • 我刚开始使用缓存,memcachier 是客户端吗?我正在逃离 Heroku
  • 我想没关系。这是不可能的,请看这个问题:stackoverflow.com/questions/4515770/memcache-expiration-times
  • 所以我不能告诉我的用户他们还要等多久?
  • 不采用这种方法。您可以存储到期日期时间而不是 1 并以这种方式计算。它不会是完美的,但它应该是可用的。

标签: django memcached django-cache


【解决方案1】:

不,这是不可能的,如果你想要它,你必须将值缓存到另一个内存,如 redis 或等

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2016-07-10
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多