Skip to main content

Academy LogConfig that ships agent logs to Diaspora/Kafka, with support for Globus Compute remote execution

Project description

academy-diaspora-logger

Academy LogConfig that ships agent logs to a Diaspora Kafka topic, with built-in support for running agents on Globus Compute.

Also ships a diaspora CLI for managing credentials, fetching events, and clearing topics.

Installation

pip install academy-diaspora-logger

Globus Compute users: install this package on both your local machine and the remote endpoint so that dill can deserialize DiasporaLogConfig on the worker.


Python API

Local execution (threads / local processes)

from diaspora_logger import DiasporaLogConfig
from academy.manager import Manager
from academy.exchange import LocalExchangeFactory
from concurrent.futures import ThreadPoolExecutor

log_cfg = DiasporaLogConfig(kafka_topic)

async with await Manager.from_exchange_factory(
    factory=LocalExchangeFactory(),
    executors=ThreadPoolExecutor(max_workers=3),
    log_config=log_cfg,
) as manager:
    ...

Globus Compute (remote execution)

Call prefetch() on your local machine before launching agents. It uses your locally cached Globus credentials to fetch AWS IAM keys from the Diaspora service and embeds them in the config. The remote worker receives the keys via the pickled config and never needs Globus auth itself.

from diaspora_logger import DiasporaLogConfig
from academy.manager import Manager
from academy.exchange.cloud.client import HttpExchangeFactory
from globus_compute_sdk import Executor as GCExecutor

log_cfg = DiasporaLogConfig.prefetch(kafka_topic)

async with await Manager.from_exchange_factory(
    factory=HttpExchangeFactory(),
    executors=GCExecutor(endpoint_id),
    log_config=log_cfg,
) as manager:
    ...

Consuming events locally

from diaspora_context import get_diaspora_events

result = get_diaspora_events(
    topic_name=kafka_topic,
    time_horizon=time_before_ms,   # unix epoch milliseconds
)
for event in result["events"]:
    print(event)

CLI

After installation a diaspora command is available on your PATH.

diaspora setup

Register your Globus identity with Diaspora and create your IAM credentials.

diaspora setup

diaspora context

Fetch recent events from a topic and print them as JSON.

diaspora context --topic my-topic
diaspora context --topic ns-abc123.my-topic --lookback 7200   # last 2 hours
diaspora context --topic my-topic --time-horizon 1718000000000 --max-messages 500
Flag Default Description
--topic required Topic name (short or fully-qualified)
--lookback 3600 Seconds to look back from now
--time-horizon Unix-epoch ms timestamp (overrides --lookback)
--timeout-ms 30000 Consumer poll timeout
--max-messages 10000 Maximum events to return

diaspora clear

Recreate (wipe) a topic.

diaspora clear my-topic

How it works

Scenario Auth How credentials reach Kafka
Local Globus tokens on disk KafkaProducer calls Client().create_key() automatically
Globus Compute prefetch() called locally once AWS IAM keys embedded in pickled config, used directly on worker

prefetch() calls Client().create_key() once on the local machine (where Globus tokens are cached) and stores the returned access_key, secret_key, and endpoint in the config object. When Academy pickles the config and ships it to the remote worker, those credentials travel with it. init_logging() on the remote then builds a raw kafka.KafkaProducer from those credentials — no Globus auth needed on the worker side.

Requirements

  • Python ≥ 3.10
  • academy-py >= 0.3.1
  • diaspora-event-sdk
  • kafka-python < 3
  • certifi (optional, recommended for macOS SSL)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

academy_diaspora_logger-0.1.2.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

academy_diaspora_logger-0.1.2-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file academy_diaspora_logger-0.1.2.tar.gz.

File metadata

  • Download URL: academy_diaspora_logger-0.1.2.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for academy_diaspora_logger-0.1.2.tar.gz
Algorithm Hash digest
SHA256 1300f0bfa72f5ce63342758a744044e608124d9cb224673db6d93aa8d4676259
MD5 6159e3cab721bec26cfb6864f4fed0b2
BLAKE2b-256 a6a4334707d74fb38bdc964e20873f4de431a4c1ae096b9d5c20819228d1ba38

See more details on using hashes here.

File details

Details for the file academy_diaspora_logger-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for academy_diaspora_logger-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ae3b24f887448dacffcff679d2774aa03646aeed37450d078809f5450420fe29
MD5 1df9d08dc39355b297ced3a1864ec513
BLAKE2b-256 ca1877ebd6c30482cb229ca82d13a8f55470f0b5f4892d0a133ce3f2e0e6fd08

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page