#kdb
#kdb
Вопрос:
Я знаю, что в EOD TP отправляет сигнал всем своим подписчикам и вызывает функцию .u.eod. Однако, какая функция в TP отправляет сигналы своим подписчикам? Я хотел бы знать. В настоящее время я пересматриваю свой код CTP и беспокоюсь, что сигнал не будет отправлен его подписчикам.
Ответ №1:
Это в .u.end
, см. https://github.com/KxSystems/kdb-tick/blob/master/tick/u.q#L18
end:{(neg union/[w[;;0]])@:(`.u.end;x)}
Когда запускается .u.end, возьмите объединение всех дескрипторов абонентов из .u.w
словаря и каждому из них отправьте .u.end
вызов с x
указанием даты, которая только что завершилась
Комментарии:
1. Стоит отметить, что это отправляется асинхронно, поэтому любой дорогостоящий процесс EOD на удаленном процессе не заблокирует TP от обслуживания других клиентов.
2. но какая функция запускает .u.end в 00:00?
3. Есть две основные вещи, которые вызывают активность в tickerplant ….. входящие данные (они же вызов
.u.upd
) или таймер (.z.ts
). Если вы посмотрите на оба, вы увидите проверку, которая может вызвать конец рабочего дня (.u.ts
или простоts
при записи в область пространства имен .u)