2016-03-18 2 views
-1

Я пишу небольшую функцию, чтобы поймать 404, когда я запрашиваю информацию из API. КодPython не поймал исключение 404 во время цикла

def film_api(): 
    number = random.randint(1, 10000) 
    film = requests.get('https://api.themoviedb.org/3/movie/{}?api_key=################'.format(number)) 
    while film.status_code == '404': 
     film = requests.get('https://api.themoviedb.org/3/movie/{}?api_key=################'.format(number)) 
    else: 
     return film.json() 

404 Выход

{ 
    'status_code': 34, 
    'status_message': 'The resource you requested could not be found.' 
} 

правильный выход

{ 
    'spoken_languages': [{ 
     'name': 'English', 
     'iso_639_1': 'en' 
    }], 
    'genres': [{ 
     'name': 'Comedy', 
     'id': 35 
    }, { 
     'name': 'Drama', 
     'id': 18 
    }], 
    'popularity': 0.493744, 
    'original_title': 'American Splendor', 
    'overview': 'An original mix of fiction and reality illuminates the life of comic book hero everyman Harvey Pekar.', 
    'runtime': 101, 
    'status': 'Released', 
    'homepage': 'http://www.newline.com/properties/americansplendor.html', 
    'video': False, 
    'revenue': 6003587, 
    'release_date': '2003-08-15', 
    'adult': False, 
    'vote_average': 6.4, 
    'imdb_id': 'tt0305206', 
    'poster_path': '/pcZ08ts1HaxWpUMMMQL2z3pomf1.jpg', 
    'production_companies': [], 
    'belongs_to_collection': None, 
    'title': 'American Splendor', 
    'backdrop_path': '/AswDSBB3rbh2auan9tKjETg09H8.jpg', 
    'original_language': 'en', 
    'budget': 0, 
    'vote_count': 43, 
    'production_countries': [{ 
     'iso_3166_1': 'US', 
     'name': 'United States of America' 
    }], 
    'tagline': 'Ordinary life is pretty complicated', 
    'id': 2771 
} 

Я отскакивая назад и вперед между Docs, чтобы найти свой ответ и переехал из кроме цикла while. Я использую Python, Flask и Requests для создания простой веб-функции, поэтому она не должна быть слишком сложной.

Есть что-то, что мне не хватает конкретно?

+0

Итак, если вы получаете 404, вы хотите, чтобы повторно получить тот же самый URL, который только что бросил 404? –

+0

Спасибо вам за ваш вход. но ответит @Adem Öztaş. – Akseone

ответ

1

requestsstatus_code возвращает целое число не строка.

Таким образом, вы можете установить как if film.status_code == 404:

def film_api(): 
    number = random.randint(1, 10000) 
    film = requests.get('https://api.themoviedb.org/3/movie/{}?api_key=################'.format(number)) 
    if film.status_code == 404: 
     film = requests.get('https://api.themoviedb.org/3/movie/{}?api_key=################'.format(number)) 
    else: 
     return film.json() 
+0

Большое спасибо @Adem Öztaş, что действительно было, где я ошибся. – Akseone

Смежные вопросы