macadmins / macadmins/jamf-pro-sdk-python

[Feature Request] Add async/await support to SDK

Offen
#73 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

enhancement
Vorherrschende Sprache
Python
Sterne
69
Forks
16
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Proposal

Add native asynchronous (async/await) support to the Jamf Pro SDK, enabling use with modern async Python frameworks.

Features:

  • Async client classes: AsyncJamfProClient, AsyncProApi, AsyncClassicApi, AsyncJCDS2, and AsyncWebhooksClient
  • Async pagination & concurrency operations
  • Context manager support

Backwards compatibility is ensured as we would not be modifying existing synchronous code whatsoever.

Implementation Example
import asyncio
from jamf_pro_sdk import AsyncJamfProClient, ApiClientCredentialsProvider

async def main():
    async with AsyncJamfProClient(
        server="jamf.my.org",
        credentials=ApiClientCredentialsProvider("client_id", "client_secret")
    ) as client:
        # Single async operation
        computers = await client.classic_api.list_all_computers()
        
        # Concurrent operations
        computer_ids = [c.id for c in computers]
        async for computer in client.async_concurrent_api_requests(
            handler=client.classic_api.get_computer_by_id,
            arguments=computer_ids
        ):
            print(f"{computer.general.name}")

asyncio.run(main())

[!NOTE]
To support both sync and async operations, the SDK would use httpx instead of requests. However, httpx was built to be a viable replacement for requests.

Additional Details

This is a follow up to this slack convo. Happy to provide additional details/examples as needed!

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, die in der Proposal genannten bestehenden synchronen Client- und API-Klassen zu erfassen, und prüfe anschließend, wie sich der aktuelle auf requests basierende Transport zu httpx ändern würde. Verwende das Beispiel AsyncJamfProClient als Einstiegspunkt für das Verhalten. Als erledigt gilt die Aufgabe, wenn asynchrone Versionen der aufgeführten Clients Paginierung, Nebenläufigkeit und Kontextmanager unterstützen, während das bestehende synchrone Verhalten unverändert bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
api, backend
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.