RemoteCV is a queued mechanism to run OpenCV computations and store them for later usage.
Currently, Thumbor uses remotecv to outsource facial or feature detection, but nothing stops you from integrating it into your product.
RemoteCV supports both PyRes and Celery for queueing back-end.
pip install remotecv
Clone the repository:
git clone https://github.com/thumbor/remotecv.git
Create a virtualenv:
cd remotecv
mkvirtualenv remotecv
Install dependencies:
make setup
Run:
make run
After installing the project, you can execute
remotecv
If you want a healthcheck handler, you must pass an argument in remotecv execution. You can also specify the http server port, the default http server port is 8080.
remotecv --with-healthcheck --server-port=8888
make unit
Usage: remotecv [OPTIONS]
Runs RemoteCV
Options:
Worker Backend:
-b, --backend [pyres|celery] Worker backend [env var: BACKEND]
Pyres Connection Arguments:
--host TEXT Redis host [env var: REDIS_HOST]
--port INTEGER Redis port [env var: REDIS_PORT]
--database INTEGER Redis database [env var: REDIS_DATABASE]
--password TEXT Redis password [env var: REDIS_PASSWORD]
--redis-mode [single_node|sentinel]
Redis mode [env var: REDIS_MODE]
--sentinel-instances TEXT Redis Sentinel instances e.g.
'localhost:26376,localhost:26377' [env var:
REDIS_SENTINEL_INSTANCES]
--sentinel-password TEXT Redis Sentinel password [env var:
REDIS_SENTINEL_PASSWORD]
--master-instance TEXT Redis Sentinel master instance [env var:
REDIS_MASTER_INSTANCE]
--master-password TEXT Redis Sentinel master password [env var:
REDIS_MASTER_PASSWORD]
--master-database INTEGER Redis Sentinel master database [env var:
REDIS_MASTER_DATABASE]
--socket-timeout FLOAT Redis Sentinel socket timeout [env var:
REDIS_SENTINEL_SOCKET_TIMEOUT]
Celery/SQS Connection Arguments:
--region TEXT AWS SQS Region [env var: AWS_REGION]
--key-id TEXT AWS access key id [env var:
AWS_ACCESS_KEY_ID]
--key-secret TEXT AWS access key secret [env var:
AWS_SECRET_ACCESS_KEY]
--polling-interval INTEGER AWS polling interval [env var:
SQS_POLLING_INTERVAL]
--celery-commands TEXT SQS command [env var: CELERY_COMMANDS]
Other arguments:
--server-port INTEGER HTTP server port [env var:
HTTP_SERVER_PORT]
--with-healthcheck Start a healthcheck http endpoint [env var:
WITH_HEALTHCHECK]
-l, --level [debug|info|warning|error|critical]
Logging level [env var: LOG_LEVEL]
-o, --loader TEXT Image loader [env var: IMAGE_LOADER]
-s, --store TEXT Detector result store [env var:
DETECTOR_STORAGE]
-t, --timeout INTEGER Timeout in seconds for image detection [env
var: DETECTOR_TIMEOUT]
--sentry-url TEXT Sentry URL [env var: SENTRY_URL]
--metrics TEXT Metrics client, should be the full name of a
python module [env var: METRICS_CLIENT]
--clear-image-metadata Clears metadata when loading image
[env var: CLEAR_IMAGE_METADATA]
Memcached store arguments:
--memcached-hosts TEXT Comma separated list of memcached hosts
[env var: MEMCACHED_HOSTS]
--help Show this message and exit.
RemoteCV can also be configured via environment variables