예제 #1
0
def provision_geowatch_producer(topic, codec, client=None, max_tries=12, sleep_period=5, topic_check=False, verbose=False):
    settings_general = load_settings_general()
    if verbose:
        settings_kafka = load_settings_kafka()
        settings_kinesis = load_settings_kinesis()
        print_settings(settings_general, settings_kafka, settings_kinesis)

    client, producer = None, None
    kwargs = {
        'topic': topic,
        'topic_check': topic_check,
        'codec': codec,
        'client': client,
        'max_tries': max_tries,
        'sleep_period': sleep_period
    }

    if client:
        client, producer = provision_producer(settings_general['backend'], ** kwargs)
    else:
        kwargs['topic_prefix'] = settings_general['topic_prefix']
        if settings_general['backend'] == "kafka":
            settings_kafka = load_settings_kafka()
            kwargs['host'] = settings_kafka['host']
            client, producer = provision_producer(settings_general['backend'], ** kwargs)
        elif settings_general['backend'] == "kinesis":
            settings_kinesis = load_settings_kinesis()
            kwargs['aws_region'] = settings_kinesis['aws_region']
            kwargs['aws_access_key_id'] = settings_kinesis['aws_access_key_id']
            kwargs['aws_secret_access_key'] = settings_kinesis['aws_secret_access_key']
            client, producer = provision_producer(settings_general['backend'], ** kwargs)

    return (client, producer)
예제 #2
0
def logTileRequest(tileorigin, tilesource, x, y, z, ext, status, datetime, ip, gw_logs=None):
    log_root = settings.LOG_REQUEST_ROOT
    log_format = settings.LOG_REQUEST_FORMAT
    if log_root and log_format:
        log_file = log_root+os.sep+"requests_tiles_"+datetime.strftime('%Y-%m-%d')+".tsv"

        line = log_format.format(status=status,tileorigin=tileorigin,tilesource=tilesource,z=z,x=x,y=y,ext=ext,ip=ip,datetime=datetime.isoformat())
        # Write to File
        client, producer = provision_producer("file", path=log_file, codec="GeoWatchCodecPlain", verbose=True)
        producer.send_text(line)

        # Write to Log Stream
        if not gw_logs:
            topic = settings.TILEJET_GEOWATCH_TOPIC_LOGS
            client, gw_logs = provision_geowatch_producer(topic, "GeoWatchCodecPlain", max_tries=3, sleep_period=5, verbose=True)
        gw_logs.send_text(line)