TP отправляет сигнал подписчикам от какой функции в Kdb ?

#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)