예제 #1
0
 def test_config(self):
     """ Check configuration of logger """
     # null handler
     logger = getLogger(__name__)
     compare([
         C('logging.NullHandler')
         ], logger.handlers)
     # stdout handler
     logger = getLogger(__name__, stdout={'level': logging.INFO})
     compare([
         C('logging.StreamHandler', level=logging.INFO, strict=False)
         ], logger.handlers)
예제 #2
0
 def test_logger(self, lc):
     """ Stream logger """
     logger = getLogger(__name__, stdout={'level': logging.INFO})
     logger.info('test message')
     vals = [v for v in lc.actual()][0]
     self.assertEqual(vals[0], __name__)
     self.assertEqual(vals[1], 'INFO')
     d = literal_eval(vals[2])
     self.assertEqual(d['message'], 'test message')
예제 #3
0
 def test_logger_json(self, lc):
     """ Stream logger with JSON output """
     logger = getLogger(__name__, stdout={'level': logging.INFO})
     logger = logging.LoggerAdapter(logger, {'collectionName': 'test_collection'})
     logger.info({'key1': 'val1', 'key2': 'val2'})
     vals = [v for v in lc.actual()][0]
     self.assertEqual(vals[0], __name__)
     self.assertEqual(vals[1], 'INFO')
     d = literal_eval(vals[2])
     self.assertTrue('collectionName' in d.keys())
     self.assertTrue('timestamp' in d.keys())
     self.assertEqual(d['message'], '')
     self.assertEqual(d['key1'], 'val1')
예제 #4
0
import os
import json
import boto3
import traceback
from botocore.client import Config
from botocore.vendored.requests.exceptions import ReadTimeout
from cumulus_process.loggers import getLogger

logger = getLogger(__name__)
"""
cls is the Process subclass for a specific data source, such as MODIS, ASTER, etc.
"""

SFN_PAYLOAD_LIMIT = 32768


def activity(handler, arn=os.getenv('ACTIVITY_ARN')):
    """ An activity service for use with AWS Step Functions """
    sfn = boto3.client('stepfunctions', config=Config(read_timeout=70))
    while True:
        get_and_run_task(handler, sfn, arn)


def get_and_run_task(handler, sfn, arn):
    """ Get and run a single task as part of an activity """
    logger.info('query for task')
    try:
        task = sfn.get_activity_task(activityArn=arn, workerName=__name__)
    except ReadTimeout:
        logger.warning('Activity read timed out. Trying again.')
        return