Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Backend.AI Common Package

Back to Backend.AI Architecture

PyPI release version Supported Python versions Gitter

Overview

The Backend.AI Common package provides utilities, infrastructure, and shared components used across all Backend.AI components (Manager, Agent, Storage Proxy, Webserver, App Proxy, etc.).

Package Structure

Entry Point System

Core event-based communication and asynchronous task processing framework for Backend.AI.

  • events/ - Event Dispatcher System

    • Asynchronous event-based communication between components
    • Broadcast and Anycast event type support
    • Message queue-based event delivery
    • Event handler registration and routing
  • bgtask/ - Background Task Handler System

    • Process long-running tasks asynchronously
    • Issue Task IDs and track tasks
    • Progress monitoring and Heartbeat
    • Notify via event publishing upon completion

Infrastructure Components

Client and abstraction layer for integration with external services and systems.

  • clients/ - External service client wrappers

    • Agent client (ZeroMQ RPC)
    • Storage Proxy client (HTTP)
    • Valkey/Redis client
    • etcd client
  • message_queue/ - Message queue interface and implementation

    • Provide message publish/subscribe interface
    • Currently implemented based on Valkey/Redis streams
    • Consumer Group management
    • Future support for other message queue systems planned
  • service_discovery/ - Service registration and integration

    • etcd-based service registration and discovery
    • Provide service information for Prometheus metrics collection
    • Automatic health check and update
    • Future expansion of additional service discovery features planned
  • resilience/ - Inter-layer communication resilience patterns

    • Generalize request processing between layers
    • Retry, Timeout, Circuit Breaker
    • Automatic metric collection
    • Fallback support

Data and Types

Common structures for data exchange and type definitions between components.

  • dto/ - Data Transfer Objects (for inter-component communication)

    • Data structures used for inter-component communication
    • Request/Response models
    • Event payloads
    • Recommended to use Pydantic-based
  • types.py - Common type definitions (for internal logic)

    • Domain types used within components (SessionId, AgentId, AccessKey, etc.)
    • Shared Enum types
    • Common constants
    • Mainly used in internal business logic

Utilities

Utility modules for development convenience and common functionality.

  • metrics/ - Metrics collection and Prometheus integration

    • Metric observer pattern
    • Prometheus metric types (Counter, Gauge, Histogram)
    • HTTP metrics middleware
  • auth/ - Authentication utilities

    • Authentication between Webserver (Gateway) and Manager
    • JWT token generation/verification
    • Signature generation/verification
    • API Key management
  • web/ - Web utilities

    • HTTP helper functions
    • CORS configuration
    • Request/response processing
  • middlewares/ - Common middlewares

    • Commonly used across all components
    • Authentication middleware
    • Logging middleware
    • Error handling middleware
  • configs/ - Configuration management utilities

    • Configuration processing commonly used internally
    • Configuration file parsing (TOML, YAML)
    • Environment variable processing
    • Configuration validation

Other Components

  • contexts/ - Context management utilities

    • ContextVar-based request and user tracking
    • Current request ID tracking
    • Current user information management
    • Context propagation
  • data/ - Common data utilities

    • Data-based value processing used in internal logic
    • Data transformation and validation
    • Common data type handling
  • exception.py - Common exception classes

    • Base exceptions for all Backend.AI services
    • Exception definitions must inherit from BackendAIError
    • Domain-specific exception classes
    • Communicate error situations externally
  • utils.py - Other utility functions

    • String processing
    • Time conversion
    • Other helper functions

Installation

$ pip install backend.ai-common

For development

$ pip install -U pip setuptools
$ pip install -U -r requirements/dev.txt

Running test suite

$ python -m pytest

With the default halfstack setup, you may need to set the environment variable BACKEND_ETCD_ADDR to specify the non-standard etcd service port (e.g., localhost:8110).

The tests for common.redis module requires availability of local TCP ports 16379, 16380, 16381, 26379, 26380, and 26381 to launch a temporary Redis sentinel cluster via docker compose.

In macOS, they require a local redis-server executable to be installed, preferably via brew, because docker compose in macOS does not support host-mode networking and Redis cannot be configured to use different self IP addresses to announce to the cluster nodes and clients.

Related Documentation

Download files

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

Source Distribution

backend_ai_common-26.8.0rc1.tar.gz (569.8 kB view details)

Uploaded Source

Built Distribution

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

backend_ai_common-26.8.0rc1-py3-none-any.whl (889.3 kB view details)

Uploaded Python 3

File details

Details for the file backend_ai_common-26.8.0rc1.tar.gz.

File metadata

  • Download URL: backend_ai_common-26.8.0rc1.tar.gz
  • Upload date:
  • Size: 569.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for backend_ai_common-26.8.0rc1.tar.gz
Algorithm Hash digest
SHA256 f5b5da1abcbcb24286f533eba0ef086b09d5bc0ef90939afab853415135bced2
MD5 c60158f53e35e358b300dd758aba4dcf
BLAKE2b-256 80e1ac5e4cedff89f761c69998d0db35ee08b878a223e3fcf886bddf4730f9ed

See more details on using hashes here.

File details

Details for the file backend_ai_common-26.8.0rc1-py3-none-any.whl.

File metadata

File hashes

Hashes for backend_ai_common-26.8.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 1e8aaebedb7434021a188ebccc441782bd669d500fbc8de058ef2910c747f1bc
MD5 09440f56226b7d8a989fea715640a01e
BLAKE2b-256 b6146595cc0d398669093a71999986c189ac8ab550af8328dab31ac34a7fc63b

See more details on using hashes here.

Release history Release notifications | RSS feed

26.8.1

2 files

26.8.0

2 files

This release

26.8.0rc1 This release

2 files

26.7.0

2 files

26.4.10

2 files

26.4.9

2 files

26.4.8

2 files

26.4.7

2 files

26.4.6

2 files

26.4.5

2 files

26.4.4

2 files

26.4.3

2 files

26.4.2

2 files

26.4.1

2 files

26.4.0

2 files

26.3.3

2 files

26.3.2

2 files

26.3.1

2 files

26.3.0

2 files

26.2.5

2 files

26.2.4

2 files

26.2.3

2 files

26.2.2

2 files

26.2.1

2 files

26.2.0

2 files

26.1.0

2 files

25.19.2

2 files

25.19.1

2 files

25.19.0

2 files

25.18.1

2 files

25.18.0

2 files

25.17.1

2 files

25.17.0

2 files

25.16.0

2 files

25.15.12

2 files

25.15.11

2 files

25.15.10

2 files

25.15.9

2 files

25.15.8

2 files

25.15.7

2 files

25.15.6

2 files

25.15.5

2 files

25.15.4

2 files

25.15.3

2 files

25.15.2

2 files

25.15.1

2 files

25.15.0

2 files

25.14.5

2 files

25.14.4

2 files

25.14.3

2 files

25.14.2

2 files

25.14.1

2 files

25.14.0

2 files

25.13.4

2 files

25.13.3

2 files

25.13.2

2 files

25.13.1

2 files

25.13.0

2 files

25.12.1

2 files

25.12.0

2 files

25.11.4

2 files

25.11.3

2 files

25.11.2

2 files

25.11.1

2 files

25.11.0

2 files

25.10.1

2 files

25.10.0

2 files

25.9.1

2 files

25.9.0

2 files

25.8.1

2 files

25.8.0

2 files

25.7.0

2 files

25.6.17

2 files

25.6.15

2 files

25.6.14

2 files

25.6.13

2 files

25.6.12

2 files

25.6.10

2 files

25.6.9

2 files

25.6.8

2 files

25.6.7

2 files

25.6.6

2 files

25.6.5

2 files

25.6.4

2 files

25.6.3

2 files

25.6.2

2 files

25.6.1

2 files

25.6.0

2 files

25.5.2

2 files

25.5.1

2 files

25.5.0

2 files

25.4.0

2 files

25.3.3

2 files

25.3.2

2 files

25.3.1

2 files

25.3.0

2 files

25.2.0

2 files

25.1.1

2 files

24.12.1

2 files

24.12.0

1 file

24.9.14

2 files

24.9.13

2 files

24.9.7

2 files

24.9.6

2 files

24.9.5

2 files

24.9.4

2 files

24.9.3

2 files

24.9.2

2 files

24.9.1

2 files

24.9.0

2 files

24.3.11

2 files

24.3.10

2 files

24.3.9

2 files

24.3.8

2 files

24.3.7

2 files

24.3.6

2 files

24.3.5

2 files

24.3.4

2 files

24.3.3

2 files

24.3.2

2 files

24.3.0

2 files

23.9.10

2 files

23.9.10rc2

2 files

23.9.8

2 files

23.9.6

2 files

23.9.5

2 files

23.9.4

2 files

23.9.3

2 files

23.9.2

2 files

23.9.1

2 files

23.9.0

2 files

23.3.12

2 files

23.3.11

2 files

23.3.10

2 files

23.3.9

2 files

23.3.8

2 files

23.3.7

2 files

23.3.6

2 files

23.3.5

2 files

23.3.4

2 files

23.3.3

2 files

23.3.2

2 files

23.3.1

2 files

23.3.0

2 files

22.9.23

2 files

22.9.22

2 files

22.9.21

2 files

22.9.20

2 files

22.9.19

2 files

22.9.18

2 files

22.9.17

2 files

22.9.16

2 files

22.9.15

2 files

22.9.14

2 files

22.9.13

2 files

22.9.12

2 files

22.9.11

2 files

22.9.10

2 files

22.9.9

2 files

22.9.8

2 files

22.9.7

2 files

22.9.6

2 files

22.9.5

2 files

22.9.4

2 files

22.9.3

2 files

22.9.2

2 files

22.9.1

2 files

22.9.0

2 files

22.3.14

2 files

22.3.13

2 files

22.3.12

2 files

22.3.11

2 files

22.3.10

2 files

22.3.9

2 files

22.3.8

2 files

22.3.7

2 files

22.3.6

2 files

22.3.5

2 files

22.3.4

2 files

22.3.1

2 files

22.3.0

2 files

21.9.8

2 files

21.9.7

2 files

21.9.6

2 files

21.9.5

2 files

21.9.4

2 files

21.9.3

2 files

21.9.2

2 files

21.9.1

2 files

21.9.0

2 files

21.3.14

2 files

21.3.13

2 files

21.3.12

2 files

21.3.11

2 files

21.3.10

2 files

21.3.9

2 files

21.3.8

2 files

21.3.7

2 files

21.3.6

2 files

21.3.5

2 files

21.3.4

2 files

21.3.3

2 files

21.3.2

2 files

21.3.1

2 files

21.3.0

2 files

20.9.11

2 files

20.9.10

2 files

20.9.9

2 files

20.9.8

2 files

20.9.7

2 files

20.9.6

2 files

20.9.5

2 files

20.9.4

2 files

20.9.3

2 files

20.9.2

2 files

20.9.1

2 files

20.9.0

2 files

20.3.13

2 files

20.3.12

2 files

20.3.11

2 files

20.3.10

2 files

20.3.9

2 files

20.3.8

2 files

20.3.7

2 files

20.3.6

2 files

20.3.5

2 files

20.3.4

2 files

20.3.3

2 files

20.3.2

2 files

20.3.1

2 files

20.3.0

2 files

19.9.10

2 files

19.9.9

2 files

19.9.8

2 files

19.9.6

2 files

19.9.5

2 files

19.9.4

2 files

19.9.3

2 files

19.9.2

2 files

19.9.1

2 files

19.9.0

2 files

19.3.2

2 files

19.3.1

2 files

19.3.0

2 files

18.12.0

2 files

1.4.1

2 files

1.4.0

2 files

1.3.1

2 files

1.3.0

2 files

1.2.0

2 files

1.1.2

2 files

1.1.0

2 files

1.0.3

2 files

1.0.2

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page