Yahoo Weather API WOEID поиск

reload(module), но только если он полностью автономный. Если что-либо еще имеет ссылку на модуль (или любой объект, принадлежащий модулю), тогда вы получите тонкие и любопытные ошибки, вызванные тем, что старый код висит дольше, чем вы ожидали, и такие вещи, как isinstance, не работают с разными версии одного и того же кода.

Если у вас есть односторонние зависимости, вы также должны перезагрузить все модули, зависящие от перезагруженного модуля, чтобы избавиться от всех ссылок на старый код. И затем перезагружайте модули, которые зависят от перезагруженных модулей, рекурсивно.

Если у вас есть циклические зависимости, которые очень распространены, например, когда вы имеете дело с перезагрузкой пакета, вы должны выгрузить все модули в группе за один присест. Вы не можете сделать это с помощью reload(), поскольку он будет повторно импортировать каждый модуль до того, как его зависимости будут обновлены, что позволит использовать старые ссылки для ползучести в новые модули.

Единственный способ сделать это в этом случае это взломать sys.modules, что является неподдерживаемым. Вам нужно будет пройти и удалить каждую запись sys.modules, которую вы хотели бы перезагрузить при следующем импорте, а также удалить записи, значения которых None для решения проблемы с реализацией, связанной с кэшированием, при неудачном относительном импорте. Это не очень приятно, но пока у вас есть полностью автономный набор зависимостей, который не оставляет ссылки за пределами его кодовой базы, он работоспособен.

Вероятно, лучше всего перезапустить сервер. : -)

29
задан askon 30 November 2009 в 21:53
поделиться

1 ответ

Почему бы просто не использовать Yahoo! Служба GeoPlanet для определения места в WOEID? Или использовать службу YQL для доступа к GeoPlanet через ее таблицу?

http://where.yahooapis.com/v1/places.q('Barrie CA')?appid=[yourappidhere]

или

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22Barrie%20CA%22&format=xml

Нет необходимости в парсинге.

Ура

G

(Раскрытие информации; я работаю в Yahoo! и являюсь частью группы, стоящей за WOEID и GeoPlanet)

65
ответ дан 28 November 2019 в 01:06
поделиться
Другие вопросы по тегам:

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