[Feature Request] Add async/await support to SDK
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
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ả
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, andAsyncWebhooksClient - 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 usehttpxinstead ofrequests. However,httpxwas built to be a viable replacement forrequests.
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
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của macadmins/jamf-pro-sdk-python
-
[Bug] preview/mdm/commands deprecated & removed which breaks send_mdm_command_preview() method.Có thể làm lại được @liquidz00 đã nhận 410 ngày trước và không có pull request nào đang mở. Đang mởbug
macadmins/jamf-pro-sdk-python#68 · 1 bình luận · 1 người được giao ·
-
bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 38/100
macadmins/jamf-pro-sdk-python#55 · 1 bình luận ·
-
[Feature Request] Pass a model to the Classic and Pro API request methods as the return type.Có thể làm lại được @liquidz00 đã nhận 463 ngày trước và không có pull request nào đang mở. Đang mởenhancement
macadmins/jamf-pro-sdk-python#52 · 1 bình luận · 2 người được giao ·
-
[Feature Request] Option to parse XML from Classic API endpointsCó thể làm lại được @brysontyrrell đã nhận 1033 ngày trước và không có pull request nào đang mở. Đang mởenhancement feedback
macadmins/jamf-pro-sdk-python#33 · 4 bình luận · 1 người được giao ·
-
feedback
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
macadmins/jamf-pro-sdk-python#30 · 1 bình luận ·
Tất cả issue của macadmins/jamf-pro-sdk-python
Issue tương tự
-
needs triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
openvinotoolkit/openvino_notebooks#3665 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
Maintainer thường phản hồi trong vòng 1 ngày
-
docs
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày
-
benchmark-gap
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày