Last active
May 30, 2023 19:25
-
-
Save managedkaos/8e46773b7a1fb801bba7112e7cd9638a to your computer and use it in GitHub Desktop.
Threaded API calls using Python.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Breed: terrier | |
Message: https://images.dog.ceo/breeds/terrier-australian/n02096294_1470.jpg | |
Status: success | |
HTTP Status Code: 200 | |
------------------------ | |
Breed: FAKE_DOG_1 | |
Message: None | |
Status: None | |
HTTP Status Code: 404 | |
------------------------ | |
Breed: keeshond | |
Message: https://images.dog.ceo/breeds/keeshond/n02112350_7185.jpg | |
Status: success | |
HTTP Status Code: 200 | |
------------------------ | |
Breed: mix | |
Message: https://images.dog.ceo/breeds/mix/otis.jpg | |
Status: success | |
HTTP Status Code: 200 | |
------------------------ | |
Breed: maltese | |
Message: https://images.dog.ceo/breeds/maltese/n02085936_4070.jpg | |
Status: success | |
HTTP Status Code: 200 | |
------------------------ | |
Breed: ovcharka | |
Message: https://images.dog.ceo/breeds/ovcharka-caucasian/IMG_20191108_140150.jpg | |
Status: success | |
HTTP Status Code: 200 | |
------------------------ | |
Breed: boxer | |
Message: https://images.dog.ceo/breeds/boxer/n02108089_2718.jpg | |
Status: success | |
HTTP Status Code: 200 | |
------------------------ | |
Breed: briard | |
Message: https://images.dog.ceo/breeds/briard/n02105251_6138.jpg | |
Status: success | |
HTTP Status Code: 200 | |
------------------------ | |
Breed: FAKE_DOG_3 | |
Message: None | |
Status: None | |
HTTP Status Code: 404 | |
------------------------ | |
Breed: FAKE_DOG_2 | |
Message: None | |
Status: None | |
HTTP Status Code: 404 | |
------------------------ | |
Breed: FAKE_DOG_5 | |
Message: None | |
Status: None | |
HTTP Status Code: 404 | |
------------------------ | |
Breed: appenzeller | |
Message: https://images.dog.ceo/breeds/appenzeller/n02107908_3119.jpg | |
Status: success | |
HTTP Status Code: 200 | |
------------------------ | |
Breed: malinois | |
Message: https://images.dog.ceo/breeds/malinois/n02105162_5307.jpg | |
Status: success | |
HTTP Status Code: 200 | |
------------------------ | |
Breed: cockapoo | |
Message: https://images.dog.ceo/breeds/cockapoo/Guri8.jpg | |
Status: success | |
HTTP Status Code: 200 | |
------------------------ | |
Breed: FAKE_DOG_4 | |
Message: None | |
Status: None | |
HTTP Status Code: 404 | |
------------------------ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
requests |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import threading | |
import requests | |
from queue import Queue | |
breeds = [ | |
"appenzeller", | |
"boxer", | |
"briard", | |
"cockapoo", | |
"keeshond", | |
"malinois", | |
"maltese", | |
"mix", | |
"ovcharka", | |
"terrier", | |
"FAKE_DOG_1", | |
"FAKE_DOG_2", | |
"FAKE_DOG_3", | |
"FAKE_DOG_4", | |
"FAKE_DOG_5", | |
] | |
def get_dog_info(breed, results): | |
message, status, http_code = None, None, None | |
try: | |
url = f"https://dog.ceo/api/breed/{breed}/images/random" | |
response = requests.get(url) | |
http_code = response.status_code | |
if response.ok: | |
data = response.json() | |
message = data["message"] | |
status = data["status"] | |
except Exception as e: | |
f_message = f"An error occurred while fetching data for breed '{breed}': {str(e)}" | |
print(f_message) | |
message = f_message | |
results.put((breed, message, status, http_code)) | |
# Create a queue to store the results | |
results_queue = Queue() | |
# Create a list to hold the thread objects | |
threads = [] | |
# Create and start a thread for each breed | |
for breed in breeds: | |
thread = threading.Thread(target=get_dog_info, args=(breed, results_queue)) | |
thread.start() | |
threads.append(thread) | |
# Wait for all threads to complete | |
for thread in threads: | |
thread.join() | |
# Process the results from the queue | |
results = [] | |
while not results_queue.empty(): | |
results.append(results_queue.get()) | |
# Print the results | |
for breed, message, status, http_code in results: | |
print(f"Breed: {breed}") | |
print(f"Message: {message}") | |
print(f"Status: {status}") | |
print(f"HTTP Status Code: {http_code}") | |
print("------------------------") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment