Source.sync(ctx) -> SyncResult пишет только raw_* и возвращает курсор; локи, журнал, ошибки и продвижение курсора берёт на себя worker/runner. ZenMoney читается единственным доступным способом — POST /v8/diff/ по serverTimestamp; токен живёт сутки, поэтому worker ротирует refresh_token через source_credential. Маппер всегда пересобирает core из полных raw_*, так что удаление в ZenMoney исчезает и у нас. ЦБ ходит мимо прокси (trust_env=False) и отдаёт cp1251 с делением на Nominal. Курсы только по рабочим дням — протяжку по календарю делает аналитика. Планировщик — APScheduler в отдельном процессе, на источник advisory-лок sync:<name>, чтобы ручной запуск не пересёкся с плановым.
19 lines
533 B
XML
19 lines
533 B
XML
<?xml version="1.0" encoding="windows-1251"?>
|
|
<ValCurs ID="R01235" DateRange1="01.09.2026" DateRange2="03.09.2026" name="Foreign Currency Market Dynamic">
|
|
<Record Date="01.09.2026" Id="R01235">
|
|
<Nominal>1</Nominal>
|
|
<Value>92,1234</Value>
|
|
<VunitRate>92,1234</VunitRate>
|
|
</Record>
|
|
<Record Date="02.09.2026" Id="R01235">
|
|
<Nominal>1</Nominal>
|
|
<Value>92,5000</Value>
|
|
<VunitRate>92,5</VunitRate>
|
|
</Record>
|
|
<Record Date="03.09.2026" Id="R01235">
|
|
<Nominal>1</Nominal>
|
|
<Value>93,0100</Value>
|
|
<VunitRate>93,01</VunitRate>
|
|
</Record>
|
|
</ValCurs>
|