Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[Feature Request] Add async/await support to SDK

Đang mở
#73 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
25/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
python
Lĩnh vực
api, backend

Hướng nghiên cứu

Bắt đầu bằng cách lập bản đồ các lớp client và API đồng bộ hiện có được nêu trong proposal, sau đó xem xét transport hiện tại dựa trên requests sẽ thay đổi như thế nào để sử dụng httpx. Sử dụng ví dụ AsyncJamfProClient làm điểm bắt đầu về mặt hành vi. Công việc được xem là hoàn tất khi các phiên bản async của những client được liệt kê hỗ trợ phân trang, tính đồng thời và context manager, trong khi hành vi đồng bộ hiện có vẫn không thay đổi.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

enhancement
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!

Ngôn ngữ chính
Python
Star
69
Fork
16
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Chúng tôi chưa kiểm tra các tệp thiết lập môi trường của dự án này. Hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của macadmins/jamf-pro-sdk-python

Tất cả issue của macadmins/jamf-pro-sdk-python

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.