diff --git a/Dockerfile b/Dockerfile index 2ebe9028b02f7f56b4a0b5ef128540c10ede2936..b15b3f7390a313606adc8a04022183e6efb88fe5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,11 +4,14 @@ RUN apt-get update -qq \ && apt-get install -qqy --no-install-recommends libjpeg-turbo-progs \ && rm -r /var/lib/apt/lists/* -RUN pip install thumbor opencv-python remotecv redis tc_prometheus +RUN pip install thumbor opencv-python remotecv redis celery tc_prometheus RUN mkdir /etc/thumbor \ && thumbor-config > /etc/thumbor.conf +ADD remotecv/https_loader.py /usr/local/lib/python2.7/site-packages/remotecv/https_loader.py +ADD remotecv/redis_store.py /usr/local/lib/python2.7/site-packages/remotecv/result_store/redis_store.py + EXPOSE 8888 EXPOSE 8000 CMD ["/usr/local/bin/thumbor"] diff --git a/remotecv/https_loader.py b/remotecv/https_loader.py new file mode 100644 index 0000000000000000000000000000000000000000..9cd22cddb1b25a0b5693b405dbe48a186a1780e2 --- /dev/null +++ b/remotecv/https_loader.py @@ -0,0 +1,8 @@ +import urllib2 +import re + +def load_sync(path): + if not re.match(r'^http?', path): + path = 'https://%s' % path + path = urllib2.unquote(path) + return urllib2.urlopen(path).read() diff --git a/remotecv/redis_store.py b/remotecv/redis_store.py new file mode 100644 index 0000000000000000000000000000000000000000..a3cdd7fc0147ca8004e47be22d422c2824200b5f --- /dev/null +++ b/remotecv/redis_store.py @@ -0,0 +1,29 @@ +from redis import Redis + +from remotecv.utils import logger +from remotecv.result_store import BaseStore + + +class ResultStore(BaseStore): + WEEK = 604800 + redis_instance = None + + def __init__(self, config): + if not ResultStore.redis_instance: + ResultStore.redis_instance = Redis( + host=config.redis_host, + port=config.redis_port, + db=config.redis_database, + password=config.redis_password, + ) + self.storage = ResultStore.redis_instance + + def store(self, key, points): + result = self.serialize(points) + logger.debug("Points found: %s" % result) + redis_key = "thumbor-detector-%s" % key + self.storage.setex( + name=redis_key, + value=result, + time=2 * self.WEEK, + )