forked from dodero/iiss-cpp-examples
-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathfutureExample.py
More file actions
35 lines (29 loc) · 1.12 KB
/
futureExample.py
File metadata and controls
35 lines (29 loc) · 1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import logging
import requests
import threading
from concurrent.futures import Future
logging.basicConfig(level=logging.DEBUG, format='%(message)s')
#definimos la petición a la api
def show_pokemon_name(response):
if response.status_code == 200:
response_json = response.json()
name = response_json.get('forms')[0].get('name')
logging.info(f'El nombre del pokemon es {name}')
def generate_request(url):
#generemos el atributo future
future = Future()
#lanzamos un hilo a la espera de que future obtenga un valor
thread = threading.Thread(target=(
lambda: future.set_result(requests.get(url))
))
thread.start()
return future
if __name__ == '__main__':
future = generate_request('https://pokeapi.co/api/v2/pokemon/1/')
#funcion que se ejecutará una vez el future cambie de valor
future.add_done_callback(
lambda future: show_pokemon_name(future.result())
)
#mensaje que se irá mostrando mientra future no tenga valor
while not future.done():
logging.info('A la espera de un resultado')## Instrucciones para compilar y ejecutar el código