Skip to main content

Async Cache CDN client implementation

Project description

Cache CDN Client

A Python client library for interacting with the Cache CDN service based on CAFS, allowing efficient pushing and pulling of cached content.

Installation

pip install cafs-cache-cdn-client

Features

  • Asynchronous API for high-performance operations
  • Push local directories to cache
  • Pull cached content to local directories
  • Check existence of cached references
  • Tag references for easier access
  • Attach additional files to existing references
  • Delete references when no longer needed

Usage Example

import asyncio
import logging
from pathlib import Path
from cafs_cache_cdn_client import CacheCdnClient, CompressionT

# Configure logging to see detailed operation information
logging.basicConfig(level=logging.DEBUG)


async def main():
    # Initialize the client with the server URL
    # The connection_per_cafs_server parameter controls concurrency
    client = CacheCdnClient(
        'http://cache-server.example.com:8300',
        connection_per_cafs_server=10,
        verbose_debug=True,
    )

    # Use as an async context manager to ensure proper resource cleanup
    async with client:
        # Push a local directory to cache with a 2-hour TTL and preferred ZSTD compression
        await client.push('project_name', 'build_artifacts',
                          '/path/to/build/output', ttl_hours=2,
                          comment='Build artifacts from CI run #123',
                          compression=CompressionT.ZSTD)

        # Check if a reference exists
        exists = await client.check('project_name', 'build_artifacts')
        print(f"Reference exists: {exists}")

        # Pull cached content to a local directory
        await client.pull('project_name', 'build_artifacts',
                          '/path/to/destination')

        # Tag a reference for easier access later
        await client.tag('project_name', 'build_artifacts', 'latest_stable')

        # Attach an additional file to an existing reference
        await client.attach('project_name', 'build_artifacts',
                            Path('/path/to/metadata.json'))

        # Delete a reference when no longer needed
        await client.delete('project_name', 'old_artifacts')


# Run the example
if __name__ == '__main__':
    asyncio.run(main())

API Reference

CacheCdnClient

  • Constructor: CacheCdnClient(server: str, connection_per_cafs_server: int = 1)

    • server: URL of the cache server
    • connection_per_cafs_server: Number of concurrent connections per CAFS server
    • logger: Optional logger for custom logging
    • verbose_debug: Enable verbose debug logging (default: False)
  • Methods:

    • push(repo: str, ref: str, directory: Path | str, ttl_hours: int = 0, comment: str | None = None, compression: CompressionT = CompressionT.NONE) - Push a local directory to cache
    • pull(repo: str, ref: str, directory: Path | str) - Pull cached content to a local directory
    • check(repo: str, ref: str) -> bool - Check if a reference exists
    • tag(repo: str, ref: str, tag: str) - Create a tag for a reference
    • attach(repo: str, ref: str, file_path: Path) - Attach a file to an existing reference
    • delete(repo: str, ref: str) - Delete a reference

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

cafs_cache_cdn_client-1.0.9.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

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

cafs_cache_cdn_client-1.0.9-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file cafs_cache_cdn_client-1.0.9.tar.gz.

File metadata

  • Download URL: cafs_cache_cdn_client-1.0.9.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.13.2 Darwin/23.4.0

File hashes

Hashes for cafs_cache_cdn_client-1.0.9.tar.gz
Algorithm Hash digest
SHA256 a671aa891b48b63ce5dd6b45f0425bf51e16f721b59dc9c4db87a85f8979ad9a
MD5 28a871bd24cef9e2c5e4a0a11b43fe2b
BLAKE2b-256 c85f8ad6a8ec3f946c92c22a27cc9107af2302c4464f8d47109a1f296a5000fe

See more details on using hashes here.

File details

Details for the file cafs_cache_cdn_client-1.0.9-py3-none-any.whl.

File metadata

File hashes

Hashes for cafs_cache_cdn_client-1.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 c306af85023be0f5b487a1150b32f18a0084ea73eed316f96dcc63720ba549d2
MD5 17886762c68784d4f212bb35bdb742eb
BLAKE2b-256 6f6a09a4d1bad1c7f910f60139d4fee86cdd64469fab06bf02b02183855e3e27

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