コード例 #1
0
def heartbeat():
    """
    Sequentially runs each of the memcached, redis, and celery health checks.
    Returns a 500 if any raise ServiceDown, otherwise returns a 200 with an
    empty body.
    """
    celery, memcached, redis = True, True, True

    # create an shared celery app for testing
    from recommendation.factory import create_queue
    app = create_queue()

    try:
        celery_status(app)
    except ServiceDown:
        celery = False
    try:
        memcached_status()
    except ServiceDown:
        memcached = False
    try:
        redis_status(app)
    except ServiceDown:
        redis = False

    # close any opened connections to broker
    app.close()

    return jsonify({
        'celery': celery,
        'memcached': memcached,
        'redis': redis
    }), (200 if all([celery, memcached, redis]) else 500)
コード例 #2
0
def heartbeat():
    """
    Sequentially runs each of the memcached, redis, and celery health checks.
    Returns a 500 if any raise ServiceDown, otherwise returns a 200 with an
    empty body.
    """
    celery, memcached, redis = True, True, True

    # create an shared celery app for testing
    from recommendation.factory import create_queue
    app = create_queue()

    try:
        celery_status(app)
    except ServiceDown:
        celery = False
    try:
        memcached_status()
    except ServiceDown:
        memcached = False
    try:
        redis_status(app)
    except ServiceDown:
        redis = False

    # close any opened connections to broker
    app.close()

    return jsonify({
        'celery': celery,
        'memcached': memcached,
        'redis': redis
    }), (200 if all([celery, memcached, redis]) else 500)
コード例 #3
0
 def test_new_app(self):
     self.app.config.update({self.TEST_KEY: self.TEST_VALUE})
     queue = create_queue()
     eq_(type(queue), Celery)
     ok_(self.TEST_KEY not in queue.conf.keys())
コード例 #4
0
 def test_existing_app(self):
     self.app.config.update({self.TEST_KEY: self.TEST_VALUE})
     queue = create_queue(self.app)
     eq_(type(queue), Celery)
     eq_(queue.conf[self.TEST_KEY], self.TEST_VALUE)
コード例 #5
0
 def test_new_app(self):
     self.app.config.update({self.TEST_KEY: self.TEST_VALUE})
     queue = create_queue()
     eq_(type(queue), Celery)
     ok_(self.TEST_KEY not in queue.conf.keys())
コード例 #6
0
 def test_existing_app(self):
     self.app.config.update({self.TEST_KEY: self.TEST_VALUE})
     queue = create_queue(self.app)
     eq_(type(queue), Celery)
     eq_(queue.conf[self.TEST_KEY], self.TEST_VALUE)
コード例 #7
0
from recommendation import tasks  # noqa
from recommendation.factory import create_app, create_queue

application = create_app()
celery = create_queue()
コード例 #8
0
 def test_celery_status_workers_down(self, mock_ping):
     mock_ping.return_value = MEMCACHED_PING_BAD
     with self.assertRaises(ServiceDown):
         celery_status(create_queue())
コード例 #9
0
 def test_redis_status_fail(self, mock_ping):
     mock_ping.side_effect = RedisError
     with self.assertRaises(ServiceDown):
         redis_status(create_queue())
コード例 #10
0
 def test_celery_status_pass(self, mock_ping):
     mock_ping.return_value = MEMCACHED_PING_OK
     celery_status(create_queue())
     self.assert_(True)
コード例 #11
0
 def test_redis_status_fail(self, mock_ping):
     mock_ping.side_effect = RedisError
     with self.assertRaises(ServiceDown):
         redis_status(create_queue())
コード例 #12
0
 def test_redis_status_pass(self, mock_ping):
     redis_status(create_queue())
     self.assert_(True)
コード例 #13
0
import hashlib

from recommendation import conf
from recommendation.factory import create_queue
from recommendation.memcached import memcached
from recommendation.search.recommendation import SearchRecommendation


queue = create_queue()


def make_key(query):
    return '_'.join([
        conf.KEY_PREFIX,
        hashlib.md5(str(query).lower().encode('utf-8')).hexdigest()
    ])


@queue.task(name='main.recommend')
def recommend(query):
    recommendation = SearchRecommendation(query).do_search(query)
    key = make_key(query)
    memcached.set(key, recommendation, time=conf.MEMCACHED_TTL)
    return recommendation
コード例 #14
0
 def test_celery_status_workers_down(self, mock_ping):
     mock_ping.return_value = MEMCACHED_PING_BAD
     with self.assertRaises(ServiceDown):
         celery_status(create_queue())
コード例 #15
0
 def test_celery_status_no_clusters(self, mock_ping):
     mock_ping.return_value = MEMCACHED_PING_NO_CLUSTERS
     with self.assertRaises(ServiceDown):
         celery_status(create_queue())
コード例 #16
0
 def test_celery_status_pass(self, mock_ping):
     mock_ping.return_value = MEMCACHED_PING_OK
     celery_status(create_queue())
     self.assert_(True)
コード例 #17
0
 def test_celery_status_no_clusters(self, mock_ping):
     mock_ping.return_value = MEMCACHED_PING_NO_CLUSTERS
     with self.assertRaises(ServiceDown):
         celery_status(create_queue())
コード例 #18
0
 def test_redis_status_pass(self, mock_ping):
     redis_status(create_queue())
     self.assert_(True)