Клиент Для Soap Api Почты России На Python

В процессе работы над текущими проектами возникла ситуация, когда сайт отслеживания Почты России «внезапно» перестал парсить.

В Интернете даже поднялся небольшой шум по поводу «ужасной» новой защиты и т. д. Потом в том же Интернете всплыла информация, что у «Почты России» действительно есть API. Не совсем по-человечески (т.е.

с использованием протокола SOAP), но какой-то существует и кто-то его даже якобы использует. Я сообщил начальнику, начальник написал письмо на Почту России (электронное, на удивление) и оказалось - да.

Все это действительно существует и вроде бы даже работает. Видимо они создали сервис Затем .

Под катом будет ссылка на рабочий класс клиента (на питон ) к API Почты России и некоторые подробности работы с ним.



Для кого
Итак, вы отслеживаете большое количество отправлений и, конечно, справились с текущей проблемой разбора страницы проблем с отслеживанием сайта Почты России (далее «почта»), но логически предполагаете, что этого не было.

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

Что делать? Как обеспечить будущее вашего сервиса/компании? Вы уже догадались, но я скажу вслух - Вам нужно подключиться к API! Вот тут-то и начинается веселье.

Эта услуга доступна не всем, но если у вас (компании) есть договор с почтой, то шансы получить заветный доступ очень высоки.

В регламенте сервиса, который рассылают счастливчикам, эти самые абоненты называются «федеральными клиентами».

Не знаю, то ли это особый статус, то ли так называют всех, у кого есть договор с почтой.



Как получить доступ
В общем, берите мыло (желательно в электронном виде) и пишите в свободной форме на почту.

[email protected] , кто вы, для чего вам нужен «доступ к отслеживанию статусов RPO по протоколу SOAP» и зачем он вам нужен.

Для этого вам пришлют положение, в котором будет форма, которую вам нужно заполнить, в доме, который построил Джек, за подписью руководителя и скрепленную печатью вашей конторы и отправленную обратно, в виде сканирование.

После этого вам дадут. логин и пароль (которые не будут активированы, пока вы не пожалуетесь, что ничего не работает, а может нам просто не повезло.

).



Как работать
Теперь пришло время идти в атаку.

Форк/клон:

   

git://github.com/qnub/ru-post-soap-client.git

Вы настраиваете (или не настраиваете) см.

readme ).

И мы идем

from time import sleep from client import RuPostClient client = RuPostClient() tickets = client.make_ticket(all_my_track_numbers) sleep(900) track_statuses = client.get_tracks(tickets.keys())

Ну или что-то в этом роде - дальше тот же ридми.



Нюансы
Согласно регламенту, запросы данных по одному и тому же билету можно производить не чаще, чем раз в 15 минут и не ранее, чем через 15 минут после его создания.

В билете нельзя запросить данные более чем по 3000 (трем тысячам) треков одновременно (в одном билете).

Посмотрите сами здесь.

Нам, например, достаточно 100 треков, потому что.

Для каждого трека поступает довольно много данных.

В результате, в зависимости от условий, это может нагружать чью-то систему.

Если вы ввели авторизационные данные правильно, и у вас появляется ошибка 16 «Внутренняя ошибка в работе службы обмена данными», проверьте, правильно ли были введены номера отслеживания (подчистите спецсимволы и т.п.

).

Если не поможет, напишите письмо на тот же адрес и попросите проверить, что с ними не так.

В конце концов нам просто сказали, что ошибка исправлена и всё.

Не знаю, что случилось, но это помогло.



Спасибо
Спасибо боссу за разрешение поделиться с вами этим кодом.

Сама технология была разработана за его счет, но я выделил ее в класс ради себя.

Приятного использования ( как кажется еще пара человек интересуется).

Форки, пул-реквесты, отчеты об ошибках — все по классической программе GitHub ( связь еще раз, чтобы не искать).

Теги: #russianpost #python #soap #python #api

Вместе с данным постом часто просматривают: