GeoWatch Util / Examples

Below are a list of standard examples, configured as dicts and as direct code.

You can download these examples and more on GitHub.

AWS Kinesis to WFS

local_settings.py

GEOWATCH_BROKERS = [
    {
        "enabled": True,
        "name": "Kinesis to WFS",
        "description": "Incoming GeoJSON from AWS Kinesis to WFS",
        "consumers":
        [
            {
                "enabled": True,
                "backend": "kinesis",
                "codec": "json",
                "topic_prefix": "",
                "topic": "geowatch-geonode"
            }
        ],
        "stores_out":
        [
            {
                "enabled": True,
                "backend": "wfs",
                "key": None,
                "codec": "wfs",
                "options": {
                    "url": "http://localhost:8080/geoserver/wfs",
                    "auth_user": "admin",
                    "auth_password": "admin"
                }
            }
        ]
    }
]

geowatch-brokers.py

from multiprocessing import Process, Lock, Queue, cpu_count

from django.conf import settings

from geowatch.runtime import provision_brokers


def run(broker):
    broker.run()

verbose = True
brokers = provision_brokers(settings.GEOWATCH_BROKERS_CRON)

if not brokers:
    print "Could not provision brokers."
else:
    print str(cpu_count())+" CPUs are available."
    processes = []
    processID = 1
    for broker in brokers:
        process = Process(target=run,args=(broker,))
        process.start()
        processes.append(process)
        processID += 1

    print "Provisioned "+str(len(brokers))+" brokers."

Multiple Apache Kafka to AWS Kinesis

GEOWATCH_BROKERS = [
    {
        "enabled": True,
        "name": "Logs",
        "description": "Aggregate incoming logs from multiple Apache topics to AWS Kinesis",
        "consumers":
        [
            {
                "enabled": True,
                "backend": "kafka",
                "codec": "plain",
                "topic": "logs-master",
                "host": "localhost"
            },
            {
                "enabled": True,
                "backend": "kafka",
                "codec": "plain",
                "topic": "logs-worker",
                "host": "localhost"
            }
        ],
        "producers":
        [
            {
                "enabled": True,
                "backend": "kinesis",
                "codec": "wfs",
                "topic": "logs-aggregate",
                "aws_region"=XXX,
                "aws_access_key_id"=XXX,
                "aws_secret_access_key"=XXX
            }
        ]
    }
]

Apache Kafka

from geowatchutil.runtime import provision_consumer

client, consumer = provision_consumer(
    "kafka",
    host=None,
    topic=None,
    codec="plain",
    topic_prefix="",
    max_tries=12,
    timeout=5,
    sleep_period=5,
    topic_check=False,
    verbose=False):

AWS Kinesis

from geowatchutil.runtime import provision_consumer_kafka

client, consumer = provision_consumer(
    "kinesis",
    topic=None,
    codec="GeoWatchCodecPlain",
    aws_region=None,
    aws_access_key_id=None,
    aws_secret_access_key=None,
    shard_id='shardId-000000000000',
    shard_it_type="LATEST",
    client=None,
    topic_prefix="",
    max_tries=12,
    timeout=5,
    sleep_period=5,
    topic_check=False,
    verbose=False):
from geowatchutil.runtime import provision_producer

client, producer = provision_producer(
    backend,
    topic=None,
    codec="GeoWatchCodecPlain",
    path=None,
    host=None,
    aws_region=None,
    aws_access_key_id=None,
    aws_secret_access_key=None,
    client=None,
    topic_prefix="",
    max_tries=12,
    timeout=5,
    sleep_period=5,
    topic_check=False,
    verbose=False)
from geowatchutil.store.factory import provision_store

store_file = provision_store(
    "file",
    settings.STATS_REQUEST_FILE,
    "json",
    which="first")

S3 Store

from geowatchutil.store.factory import provision_store

store_s3 = provision_store(
    "s3"
    "final_stats.json",
    "json",
    aws_region=settings.AWS_REGION,
    aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
    aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY,
    aws_bucket="tilejet",
    which="first")

Memcached Store

from geowatchutil.store.factory import provision_store

store_memcached = provision_store(
    "memcached",
    "stats.json",
    "json",
    client_type="umemcache",
    which="first",
    host="localhost",
    port=11211)

WFS Store

from geowatchutil.store.factory import provision_store

store_wfs = provision_store(
    "wfs",
    key,
    "wfs",
    url="http://geonode.org/geoserver/geonode/wfs/"
    auth_user="admin",
    auth_password="admin")
from geowatchutil.broker.base import GeoWatchBroker

broker = GeoWatchBroker(
    stores_out=stores_out,
    sleep_period=5,
    count=1,
    deduplicate=False,
    filter_last_one=False,
    timeout=5,
    verbose=True)

broker.run(max_cycle=1)  # loop once

broker.run()  # infinite loop

Kinesis to WFS

..code:: python

Kafka to Slack