2016-10-12 3 views
2

У меня есть приложение Flask, работающее на Heroku, которое подключается к API Карт Google во время запроса. Что-то вроде этого:Глобальное подключение к стороннему api Flask

client = geocoders.GoogleV3(
      client_id=self.config['GM_CLIENT_ID'], 
      secret_key=self.config['GM_SECRET_KEY'] 
     ) 
client.do_geocoding(...) 

Сейчас я создаю нового клиента для каждого запроса. Как можно подключиться к нескольким запросам?

+1

Не можете ли вы создать этого клиента после запуска приложения и просто передать объект-клиент, чтобы он мог использоваться остальной частью вашего приложения? – idjaw

+0

Могу ли я? На самом деле приложение действительно очень сложно, поэтому я думаю, что мне нужно будет сделать клиентом глобальную переменную, чтобы заставить это работать. Но похоже, что глобальная вариабельность - плохая идея в колбе? (http://stackoverflow.com/questions/32815451/are-global-variables-thread-safe-in-flask) Возможно, в этом случае все нормально, потому что клиент доступен только для чтения? Если я чувствую себя смущенным, это потому, что я ... –

+0

Общая практика проектирования, глобальные блоки действительно никогда не используются. Тем не менее, я понятия не имею, как ваш текущий код структурирован, чтобы узнать, какой кошмар рефакторинга вы можете иметь здесь :). Если фрагмент кода, который вы показываете, находится в методе, возможно, вы можете настроить инициализацию клиента в этом классе, поэтому вы можете просто изменить свои клиентские вызовы, чтобы использовать клиент вашего экземпляра -> self.client. – idjaw

ответ

0

Оказывается, это так же просто, как хранить экземпляр клиента в глобальной переменной.

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