Python không đồng bộ/chờ yêu cầu

Nếu bạn có một số kinh nghiệm với Python, rất có thể bạn đã từng sử dụng thư viện Yêu cầu tại một thời điểm nào đó. Đây là một thư viện tuyệt vời để thực hiện các yêu cầu HTTP và tương tác với các API

Ưu điểm của Yêu cầu là nó đơn giản và dễ hiểu về mặt cú pháp. Nhược điểm là nó hiện không hoạt động với Async IO — có thể rất chậm nếu bạn đang xử lý nhiều yêu cầu HTTP

HTTPX là ứng dụng khách HTTP mới có hỗ trợ không đồng bộ. Nó rất giống với Yêu cầu. Trong hướng dẫn này, tôi sẽ tạo một chương trình với các yêu cầu, giới thiệu cho bạn về Async IO và cuối cùng là sử dụng Async IO & HTTPX để làm cho chương trình nhanh hơn nhiều

Hướng dẫn này giả định rằng bạn đã sử dụng thư viện Yêu cầu của Python trước đây

Chương trình Python với các yêu cầu

Trong ví dụ này, tôi sẽ sử dụng API Sách của Google để cung cấp cho tôi tên của những cuốn sách có mã ISBN của chúng. Hãy gọi nó là công cụ tìm sách

Giải trình

Đây là quy trình của chương trình tìm sách

  1. Tôi có danh sách mã ISBN của nhiều sách khác nhau được lưu trữ trong
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    3. Tôi sử dụng
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    4 để biết thời gian tôi bắt đầu đưa ra yêu cầu. Sau đó, tôi liệt kê và lặp qua danh sách
  2. Tiếp theo, tôi in chỉ mục và tên của cuốn sách được hàm
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    5 trả về bằng cách chuyển chỉ mục danh sách & mã ISBN làm tham số. Lý do tôi in chỉ mục danh sách sẽ rõ ràng trong phiên bản không đồng bộ
  3. Cuối cùng, tôi tính toán sự khác biệt giữa thời gian hiện tại và thời gian bắt đầu để có được thời gian chạy tập lệnh

Đây là đầu ra của kịch bản

0 : The Hobbit
1 : The Fellowship of the Ring
2 : 1984
3 : Brave New World
4 : The Player of Games
5 : Watchmen
6 : Crime and Punishment
7 : Mistborn
8 : The Adventures of Sherlock Holmes
9 : The Great Gatsby
10 : Moby-Dick
11 : The Way of Kings
12 : War and Peace
13 : The Metamorphosis - Franz Kafka, New Edition
14 : Liar's Poker
Time Taken:6.764999999999418

mất 6. 76 giây để in tên sách

Giới thiệu nhanh về Async IO

Async IO sử dụng đa nhiệm hợp tác. Thay vì tạo các luồng cho đa nhiệm, bạn sử dụng một vòng lặp sự kiện duy nhất. Hãy nghĩ về vòng lặp sự kiện giống như vòng lặp while liên tục chuyển đổi giữa các tác vụ trong chương trình cho đến khi không còn tác vụ nào nữa

Việc chuyển đổi tác vụ hầu như luôn diễn ra khi có một tác vụ ràng buộc I/O [các cuộc gọi mạng, tệp I/O] trong chương trình mà CPU vẫn ở chế độ chờ trong khi chờ tài nguyên đó khả dụng

Hình ảnh này - Bạn cần thực hiện một yêu cầu HTTP và lưu trữ dữ liệu phản hồi. Chỉ với 1 yêu cầu thật đơn giản. Nhưng điều gì sẽ xảy ra nếu bạn phải thực hiện 10 hoặc 100 yêu cầu trong một vòng lặp như trong chương trình tìm sách. Khi chương trình đồng bộ, luồng là

Luồng đồng bộ — Được tạo bởi tác giả
  1. thực hiện yêu cầu
  2. Chờ phản hồi
  3. Xử lý phản hồi
  4. Lặp lại các bước 1–3 cho tất cả các yêu cầu

Các bước này được lặp lại cho mỗi yêu cầu. Vấn đề là trong khi chương trình đang chờ phản hồi từ máy chủ web, thì CPU không hoạt động khi nó có thể thực hiện một số tác vụ khác

Với Async IO, bạn có thể làm cho chương trình chuyển sang tác vụ khác trong khi chờ phản hồi từ máy chủ web. Trong ví dụ của chúng tôi, chúng tôi sẽ thực hiện đồng thời tất cả các yêu cầu HTTP và xử lý từng phản hồi khi nó xuất hiện. Luồng chương trình cho 10 yêu cầu trở thành như thế này

Luồng không đồng bộ [Các câu trả lời sẽ không theo thứ tự] — Được tạo bởi tác giả
  1. Thực hiện tuần tự tất cả 10 yêu cầu và chờ phản hồi
  2. Xử lý phản hồi nào đến trước

Ưu điểm ở đây là khi chúng tôi có thể thực hiện tất cả 10 yêu cầu cùng một lúc, một số phản hồi có thể đến chậm trong khi những phản hồi khác có thể nhanh hơn rất nhiều. Chúng tôi có thể xử lý bất kỳ phản hồi nào đến trên cơ sở ai đến trước được phục vụ trước, nhanh hơn nhiều so với phiên bản đồng bộ

Đồng thời không phải là song song. Rất dễ bị nhầm lẫn với hai thuật ngữ

Async IO đã được giới thiệu trong Python phiên bản 3. 4 với thư viện

8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
6. Các từ khóa
8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
7 /
8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
8 đã trở thành một phần của thư viện chuẩn của Python kể từ phiên bản 3. 6. Đối với hướng dẫn này, tôi đã sử dụng Python phiên bản 3. 8. Tôi sẽ giải thích việc triển khai
8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
6 bằng cách sửa đổi chương trình tìm sách

Ghi chú. Thư viện asyncio thay đổi khá nhiều trong mọi phiên bản python, vì vậy vui lòng kiểm tra phiên bản của bạn trước khi bạn cảm thấy khó chịu vì lỗi cú pháp. ]

Đủ lý thuyết. Hãy quay lại viết một số mã

HTTPX & IO không đồng bộ

Đầu tiên, cài đặt httpx bằng lệnh này

8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
0

Hãy sửa đổi chương trình tìm sách của chúng ta bằng asyncio & HTTPX. Lúc đầu có vẻ hơi choáng ngợp nhưng hãy kiên trì. tôi sẽ giải thích mọi thứ

Giải trình

Hàm async được gọi là coroutine. Coroutines là các chức năng hợp tác. Nó chỉ có thể được thực thi bên trong một vòng lặp sự kiện. Nó có thể tạm dừng quá trình thực thi của nó ở giữa và chuyển quyền điều khiển cho vòng lặp sự kiện, vòng lặp này sau đó sẽ thực thi một chương trình coroutine khác. Quá trình thực thi bị tạm dừng khi coroutine cần đợi tài nguyên, trong trường hợp của chúng tôi — phản hồi từ máy chủ. Nó sẽ tiếp tục thực thi khi có phản hồi

Các chương trình không đồng bộ chỉ đơn giản là tập hợp các coroutine. Trong python, từ khóa

8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
7 được thêm vào trước định nghĩa hàm để chỉ ra rằng đó là một coroutine

Tôi sẽ đi qua luồng chương trình

  1. Tôi chạy
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    1 để bắt đầu vòng lặp sự kiện sẽ gọi quy trình đăng ký
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    2
  2. Tiếp theo, tôi thu thập danh sách các đối tượng coroutine của
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    3 với mỗi mã ISBN & số chỉ mục làm tham số trong
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    4. Lưu ý rằng mặc dù đã gọi coroutine nhưng nó không thực thi. Thay vào đó, nó trả về một đối tượng coroutine. Một đối tượng coroutine ở đây, nói một cách đơn giản, là một thể hiện của
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    3 nhưng cần được lên lịch bên trong vòng lặp sự kiện để được thực thi. Để lên lịch cho đối tượng coroutine thực hiện, bạn phải sử dụng từ khóa
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    8 trước nó. Tôi sẽ giải thích thêm về nó trong bước 4
  3. Tôi sử dụng
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    7 để thực thi các đối tượng coroutine.
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    7 là một coroutine lên lịch các đối tượng có thể chờ đợi [như coroutines] sẽ được thực thi bởi vòng lặp sự kiện. Nó cũng tạo ra một danh sách các đối tượng được trả về từ mỗi cuộc gọi coroutine. Trong coroutine của tôi[
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    3], tôi không trả lại bất cứ thứ gì, vì vậy tôi không yêu cầu danh sách này
  4. Trong
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    3, tôi tạo ứng dụng khách không đồng bộ với HTTPX. Sau đó, tôi gửi yêu cầu đến cùng một URL. Chú ý từ khóa
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    8 trước
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    32. Điều này là do
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    33 cũng là một coroutine. Từ khóa
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    8 cho phép bạn chỉ ra vị trí trong coroutine mà việc thực thi cần phải tạm dừng. Ở đây tôi sử dụng từ khóa
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    8 trước
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    32 vì tôi phải chờ phản hồi từ máy chủ trước khi tiếp tục.
    Lưu ý. Mỗi coroutine là một đối tượng có thể chờ đợi. Ngay cả
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    7 cũng được chờ đợi. Điều này là do bạn có thể chuyển sang tác vụ khác trong khi đợi phản hồi. Mọi đối tượng có thể chờ đợi đều yêu cầu từ khóa
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    8 trước nó để thực thi nó.
  5. Sau khi máy khách gửi yêu cầu, quy trình đăng ký sẽ trao quyền kiểm soát việc thực thi trở lại vòng lặp sự kiện, vòng lặp này sẽ gọi đối tượng ______139 theo lịch trình tiếp theo. Quá trình sẽ lặp lại cho tất cả các đối tượng trong
    8: The Adventures of Sherlock Holmes
    0: The Hobbit
    14: Liar's Poker
    9: The Great Gatsby
    11: The Way of Kings
    4: The Player of Games
    5: Watchmen
    2: 1984
    13: The Metamorphosis - Franz Kafka, New Edition
    10: Moby-Dick
    7: Mistborn
    1: The Fellowship of the Ring
    3: Brave New World
    6: Crime and Punishment
    Time Taken:0.75
    4
  6. Ngay khi có phản hồi từ bất kỳ yêu cầu nào, vòng lặp sự kiện sẽ tiếp tục thực thi quy trình đăng ký cụ thể đó từ nơi nó được chờ đợi. Điều này có nghĩa là đầu ra sẽ không theo thứ tự yêu cầu vì một số phản hồi sẽ nhanh hơn những phản hồi khác. Nếu một phản hồi đến trong khi một coroutine đang được thực thi, thì coroutine của các phản hồi đó sẽ được lên lịch chờ để tiếp tục thực thi
  7. Khi tất cả các coroutine được thực thi, vòng lặp sự kiện sẽ thoát và thời gian thực hiện được in

Khi bạn chạy chương trình, bạn sẽ nhận được kết quả tương tự như thế này

8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75

Bạn có thể sử dụng chỉ mục để xem thứ tự phản hồi. Chỉ mất 0. 75 giây. Đó là mức tăng 900%. Tất nhiên, kết quả sẽ thay đổi tùy theo tốc độ internet của bạn nhưng chương trình async & HTTPX trong mọi trường hợp sẽ nhanh hơn nhiều

Đặt giới hạn cho Máy khách HTTPX

Trước khi tôi kết luận, điều quan trọng là đặt giới hạn cho số lượng yêu cầu đồng thời trong HTTPX. Rất nhiều API và trang web có giới hạn về số lượng yêu cầu bạn có thể gửi mỗi giây hoặc mỗi phút. May mắn thay, HTTPX có một chức năng có thể làm điều này

Bạn có thể đặt giới hạn bằng cách tạo đối tượng

8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
41

8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
42

Sau đó, bạn cần chuyển đối tượng giới hạn cho ứng dụng khách httpx

8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
43

HTTPX đặt theo mặc định 10 kết nối cố định và 100 kết nối max_connections tại bất kỳ điểm nào. Bạn cũng có thể đặt cả hai thành

8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
44, nếu bạn muốn khách hàng của mình gửi nhiều yêu cầu nhất có thể

Phần kết luận

Bạn có thể thấy cách thư viện

8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
6 có thể tăng tốc chương trình của bạn. Có thể mất một lúc để bạn hiểu nó nhưng nó chắc chắn đáng để nỗ lực

Mặt khác, nó có thể làm cho chương trình của bạn khó đọc hơn và khó quản lý hơn khi bạn xâu chuỗi nhiều coroutine hơn.

Async IO có rất nhiều tính năng để cung cấp. Bạn cũng có thể sử dụng nó để tạo máy chủ TCP, tăng tốc tệp I/O, v.v.

Có async đang chờ trong Python không?

Gói asyncio của Python [được giới thiệu trong Python 3. 4] và hai từ khóa của nó, async và await , phục vụ các mục đích khác nhau nhưng kết hợp với nhau để giúp bạn khai báo, xây dựng, thực thi và quản lý mã không đồng bộ.

Yêu cầu Python có hỗ trợ không đồng bộ không?

Thực hiện các yêu cầu không đồng bộ . Sử dụng IPython hoặc Python 3. 8+ với python -m asyncio để thử mã này một cách tương tác, vì chúng hỗ trợ thực thi các biểu thức async/await trong bảng điều khiển. To make asynchronous requests, you'll need an AsyncClient . Use IPython or Python 3.8+ with python -m asyncio to try this code interactively, as they support executing async / await expressions in the console.

Thư viện Python nào là tốt nhất cho các yêu cầu không đồng bộ?

Sanic được cho là framework async phổ biến nhất và được yêu thích nhất trong thế giới Python. Nó có hầu hết tất cả các tính năng mà bạn muốn cho dự án của mình — định tuyến, phần mềm trung gian, cookie, tạo phiên bản, bản thiết kế, chế độ xem dựa trên lớp, tệp tĩnh, phát trực tuyến, ổ cắm, v.v.

Tôi có thể sử dụng các yêu cầu với asyncio không?

asyncio cho phép thực sự xử lý nhiều tác vụ đồng thời [không song song. ] các yêu cầu không có chủ đề nào cả [tốt, chỉ một chủ đề]. Tuy nhiên, các yêu cầu không hỗ trợ asyncio nên bạn cần tạo chuỗi để nhận đồng thời.

Chủ Đề