import urlparse
from limits.storage import Storage
from redislite import Redis
import time

class LimitsRedisLite(Storage): # For Python Limits
    STORAGE_SCHEME = "redislite"
    def __init__(self, uri, **options):
        self.redis_instance = Redis(urlparse.urlparse(uri).netloc)

    def check(self):
        return True

    def get_expiry(self, key):
        return self.redis_instance.ttl(key)

    def incr(self, key, expiry, elastic_expiry=False):
        if not self.redis_instance.exists(key):
            self.redis_instance.set(key, 1)
            self.redis_instance.expireat(key, int(time.time() + expiry))
        else:
            oldexp = self.get_expiry(key)
            self.redis_instance.set(key, int(self.redis_instance.get(key))+1)
            self.redis_instance.expireat(key, int(time.time() + oldexp))
        return

    def get(self, key):
        return int(self.redis_instance.get(key))

    def reset(self):
        return self.redis_instance.flushdb()

import urlparse
from limits.storage import Storage
from redislite import Redis
import time

class LimitsRedisLite(Storage): # For Python Limits
    STORAGE_SCHEME = "redislite"
    def __init__(self, uri, **options):
        self.redis_instance = Redis(urlparse.urlparse(uri).netloc)

    def check(self):
        return True

    def get_expiry(self, key):
        return self.redis_instance.ttl(key) or 0

    def incr(self, key, expiry, elastic_expiry=False):
        if not self.redis_instance.exists(key):
            self.redis_instance.set(key, 1, ex=expiry)
        else:
            oldexp = self.get_expiry(key)
            self.redis_instance.set(key, int(self.redis_instance.get(key))+1, ex=oldexp)
        return

    def get(self, key):
        return int(self.redis_instance.get(key))

    def reset(self):
        return self.redis_instance.flushdb()

Fix custom redislite to account for the none errors
Fix custom redislite to account for the none errors

  import urlparse
  from limits.storage import Storage
  from redislite import Redis
  import time
  
  class LimitsRedisLite(Storage): # For Python Limits
      STORAGE_SCHEME = "redislite"
      def __init__(self, uri, **options):
          self.redis_instance = Redis(urlparse.urlparse(uri).netloc)
  
      def check(self):
          return True
  
      def get_expiry(self, key):
-         return self.redis_instance.ttl(key)
+         return self.redis_instance.ttl(key) or 0
  
      def incr(self, key, expiry, elastic_expiry=False):
          if not self.redis_instance.exists(key):
-             self.redis_instance.set(key, 1)
+             self.redis_instance.set(key, 1, ex=expiry)
-             self.redis_instance.expireat(key, int(time.time() + expiry))
          else:
              oldexp = self.get_expiry(key)
-             self.redis_instance.set(key, int(self.redis_instance.get(key))+1)
+             self.redis_instance.set(key, int(self.redis_instance.get(key))+1, ex=oldexp)
-             self.redis_instance.expireat(key, int(time.time() + oldexp))
          return
  
      def get(self, key):
          return int(self.redis_instance.get(key))
  
      def reset(self):
          return self.redis_instance.flushdb()
  
Fix custom redislite to account for the none errors
## Code Before:
import urlparse
from limits.storage import Storage
from redislite import Redis
import time

class LimitsRedisLite(Storage): # For Python Limits
    STORAGE_SCHEME = "redislite"
    def __init__(self, uri, **options):
        self.redis_instance = Redis(urlparse.urlparse(uri).netloc)

    def check(self):
        return True

    def get_expiry(self, key):
        return self.redis_instance.ttl(key)

    def incr(self, key, expiry, elastic_expiry=False):
        if not self.redis_instance.exists(key):
            self.redis_instance.set(key, 1)
            self.redis_instance.expireat(key, int(time.time() + expiry))
        else:
            oldexp = self.get_expiry(key)
            self.redis_instance.set(key, int(self.redis_instance.get(key))+1)
            self.redis_instance.expireat(key, int(time.time() + oldexp))
        return

    def get(self, key):
        return int(self.redis_instance.get(key))

    def reset(self):
        return self.redis_instance.flushdb()

## Instruction:
Fix custom redislite to account for the none errors
## Code After:
import urlparse
from limits.storage import Storage
from redislite import Redis
import time

class LimitsRedisLite(Storage): # For Python Limits
    STORAGE_SCHEME = "redislite"
    def __init__(self, uri, **options):
        self.redis_instance = Redis(urlparse.urlparse(uri).netloc)

    def check(self):
        return True

    def get_expiry(self, key):
        return self.redis_instance.ttl(key) or 0

    def incr(self, key, expiry, elastic_expiry=False):
        if not self.redis_instance.exists(key):
            self.redis_instance.set(key, 1, ex=expiry)
        else:
            oldexp = self.get_expiry(key)
            self.redis_instance.set(key, int(self.redis_instance.get(key))+1, ex=oldexp)
        return

    def get(self, key):
        return int(self.redis_instance.get(key))

    def reset(self):
        return self.redis_instance.flushdb()
