Comments 9
А почему не взять Zeep (как вариант), чтобы xml руками не собирать? https://docs.python-zeep.org/en/master/
Спасибо!
Сразу несколько общих уточнений, наблюдений и новшеств:
1. Битые архивы. Примерно 1 из 1000 архивов отдаётся битым. Кто автоматизирует дальше обработку - учтите. Пока не могу выловить, почему так происходит. Битый архив собирается именно с серверов ЕИС.
2. ЕИС реализована доработка, обеспечивающая запросы методом getPublicDocsByOrgRegionRequest - ежечасных предподготовленных архивов по информации и документам. Это вместо запросов информации и документов за произвольный период времени todayInfo.
3. Как и боялись - наблюдается падение скорости работы сервиса, когда просыпается Москва.
4. Если кому критично - сервера отдачи информации работают по времени UTC+0.
Вообще сервис дорабатывается. Думаю, что будут существенные изменения в его работе, когда все начнут им пользоваться.
Да, пока странноватая система если честно. Например, данные по РНП можно получить по реестровому номеру, а если пытаться получить архив РНП по региону с датой (метод getPublicDocsByOrgRegionRequest), то он всегда возвращает NoData. Понятно почему так происходит - на ftp сервере данные по РНП были в целом по всей стране, не по регионам. Но интеграционная схема позволяет делать запросы по региону и дате по РНП и получается не очень логично: схема позволяет, ошибок не выдает, данные в целом есть, но возвращает всегда NoData.
Последний раз про SOAP вспоминал в этом ролике.
https://www.youtube.com/watch?v=gR1PujzQ53Q
Например, для метода getDocsByOrgRegionRequest я перепутал порядок и сначала у меня стоял subsystemType, а затем orgRegion и сервер выдавал ошибку несоответствия запросу интеграционной схеме. Пример правильного xml файла для этого метода:
У вас есть схема, значит в процессе разработки можно включить валидацию по схеме, чтобы не было сюрпризов в ответах. А еще лучше сразу тест на это накидать. Это экономит время на стадии разработки.
with open('archive.zip', 'wb') as f: f.write(response_get_archive.content)
Из стрима в файл переливать лучше по кусочкам. А вдруг файл больше чем память?
гляньте на https://docs.python.org/3/library/shutil.html#shutil.copyfileobj
Сервис очень сырой хоть и работает уже больше полугода. Токен от физлица зарегистрирован, но при запросе данных сервис возвращает ошибку "Токены для сервисов отдачи отсутствуют в ЕИС". При работе как юр. лицо регистрируем сертификат в личном кабинете, по инструкции поднимаем тунель stunnel-msspi и делаем запрос данных на что получаем ответ "Сертификат который используется для установки защищённого соединения отсутствует в ЕИС".
Вообщем старые механизмы убрали, а новые так и не заработали должным образом.
До сегодняшнего дня информации как физлицу отдавал сервис. Теперь тоже "error Токены для сервисов отдачи отсутствуют в ЕИС". Сломали сервис отдачи, видимо.
Там и другие изменения теперь с новым альбомом ТФФ:
- int44.zakupki.gov.ru заменён на int.zakupki.gov.ru
- нужен сертификат минфина
И это всё для доступа как физлицу!..
SOAP, XML и Python: получаем данные с zakupki.gov.ru