@Mertos

Почему нет ответа от GET запроса в python?

Здравствуйте. Суть проблемы в следующем - при попытке отправить GET запрос по API - долгое ожидание и в конечном итоге таймаут. На других системах все работает без каких либо проблем.

import asyncio
import requests
import datetime
from aiogram import Bot, Dispatcher, types
from aiogram.filters.command import Command
from aiogram import F

bot = Bot(token='')
dispatcher = Dispatcher()
print("Работает!")

@dispatcher.message()
async def get_weather(message: types.Message):
	if message.text != "/start":
		try:
			city = message.text
			url = "http://api.openweathermap.org/data/2.5/weather?q=" +city + "&lang=ru&units=metric&appid="
			response = requests.get(url)
			print("Response status code: " + str(response.status_code))
			data = response.json()
			#print(data)
			await message.reply("Получаю данные по API ...")

			city = data["name"]
			print(city)
			cur_temp = data["main"]["temp"]
			print(cur_temp)
			wind = data["wind"]["speed"]
			print(wind)

			code_to_smile = {
				"Clear": "Ясно \U00002600",
	    	"Clouds": "Облачно \U00002601",
	    	"Rain": "Дождь \U00002614",
	    	"Drizzle": "Дождь \U00002614",
	    	"Thunderstorm": "Гроза \U000026A1",
	    	"Snow": "Снег \U0001F328",
	    	"Mist": "Туман \U0001F32B"
			}

			weather_description = data["weather"][0]["main"]
			print(weather_description)

			if weather_description in code_to_smile:
				wd = code_to_smile[weather_description]
			else:
				wd = "Ошибка"

			print(wd)

			await message.reply(f"{datetime.datetime.now().strftime('%d-%m-%Y %H:%M')}\n"
				f"Погода в городе: {city}\nТемпература: {cur_temp}°C {wd}"
			)

		except:
			await message.reply("Проверь название города!")
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 1
@rigel11
Добрый день !

Попробуйте сделать асинхронный запрос
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы