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
DiasporaLogConfigon 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.1diaspora-event-sdkkafka-python < 3certifi(optional, recommended for macOS SSL)
Metadata
Release files for academy-diaspora-logger 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| academy_diaspora_logger-1.0.0.tar.gz | 9.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| academy_diaspora_logger-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.9 kB
Release files / academy_diaspora_logger-1.0.0.tar.gz
| Download URL | academy_diaspora_logger-1.0.0.tar.gz |
|---|---|
| Size | 9.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e71ea5d84b075b4fd493b88af13aa4e5ed09f9a96368cd9d57dc5b5219f46a7c
|
|
BLAKE2b-256 checksum How to use checksums |
4e10a07bc4c6fd3a7ad354956491b95ab78c61949a6a62b02476c2c875bbb5a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / academy_diaspora_logger-1.0.0-py3-none-any.whl
| Download URL | academy_diaspora_logger-1.0.0-py3-none-any.whl |
|---|---|
| Size | 10.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f16a6f213083b6b492db7da11500072ca3de60fdf8df5194c7a0bf319e678f77
|
|
BLAKE2b-256 checksum How to use checksums |
2108e50e989baddda4edce7111b7399697f4163d6ef794a8419ae544ca9afa9a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|