Saya menggunakan perpustakaan permintaan untuk memetakan larik permintaan setelah saya mendapatkan larik dari permintaan API lain. Saya menggunakan loop untuk permintaan tetapi saya yakin ada cara yang lebih baik untuk melakukan ini karena permintaan API ini dapat memiliki 500+ item, jadi penyelesaian looping ini terkadang memakan waktu 20+ menit.

Saya mencoba menggunakan perpustakaan grequests dan saya terus mendapatkan keluhan rekursi. Saya ingin menggunakan metode async/map jika memungkinkan tetapi setelah meneliti ternyata perpustakaan async tidak didukung lagi.

self.set_header("Access-Control-Allow-Origin", "*")
response = requests.get("https://hacker-news.firebaseio.com/v0/paststories.json?print=pretty")
data = response.json()
story_list = []

for story in data:
    temp_string = "https://hacker-news.firebaseio.com/v0/item/{}.json?print=pretty".format(story)
    story_data = requests.get(temp_string)
    story_list.append(story_data.json())

Seharusnya ada cara yang lebih baik untuk melakukan perulangan ini daripada metode saat ini karena 20+ menit untuk mendapatkan data tidak dapat diterima. Respons API dalam larik asli dapat mengembalikan larik 500+ sehingga metode ini harus dapat diskalakan.

0
Demetrius 2 Juni 2019, 03:58

2 jawaban

Jawaban Terbaik

Permintaan sinkron, jadi skrip Anda menunggu respons untuk membuat permintaan baru. Jadi Mungkin Anda harus melihat permintaan aiohttp dan aysnchronous.

Ini bisa menjadi contoh: Apakah tolok ukur itu dapat diandalkan - aiohttp vs permintaan

1
Loïc 2 Juni 2019, 01:03

Baik, Anda hanya perlu meningkatkan kecepatan kode io-bond Anda, ada nada solusinya, silakan lihat jawaban terkait ini di stackoverflow: Bagaimana saya bisa menggunakan permintaan di asyncio?

Karena asyncio terlalu mendasar, ada banyak paket yang dibangun berdasarkan itu, coba paket ini: aiohttp-requests

Semoga informasi ini dapat membantu.

1
Han.Oliver 14 Agustus 2019, 09:18