File: //usr/lib/python2.7/site-packages/lap/rqworker.py
import sys
import redis
import rq
import platform
import imp
def __run__(params):
try:
sys.path = filter(lambda p: p not in ('', '.'), sys.path)
sys.path.append('')
os_distro = platform.dist()[0].lower()
if "debian" in os_distro or "ubuntu" in os_distro:
rediscli = "/usr/share/pyshared/redis/__init__.py"
else:
rediscli = "/usr/lib/python%s.%s/site-packages/redis/__init__.py" %\
(sys.version_info.major, sys.version_info.minor)
redis = imp.load_source("Redis", rediscli)
except (ImportError, IOError):
return [2, "CRITICAL - Error: Redis python client not found. Please install 'python-redis'"]
try:
host = params.get("host", "localhost")
port = int(params.get("port", "6379"))
db = int(params.get("db", "0"))
passwd = params.get("passwd")
queue = params.get("queue")
maxjobs_c = int(params.get("maxjobs", "100"))
maxjobs_w = maxjobs_c * 0.7
except Exception, e:
return [2, "CRITICAL - Error: %s" % repr(e)]
try:
connection = redis.Redis(db=db, host=host, password=passwd)
count = rq.Queue(name=queue, connection=connection).count
except Exception, e:
return [2, "CRITICAL - Error: %s" % repr(e)]
if count >= maxjobs_c:
return [2, "CRITICAL - Queue '%s' has %s pending jobs" % (queue, count)]
if count >= maxjobs_w:
return [1, "WARNING - Queue '%s' has %s pending jobs" % (queue, count)]
return [0, "OK - Queue '%s' has %s pending jobs" % (queue, count)]