Решение из разряда "А почему я сразу так не сделал?!"
Последние две недели в свободное от срочной работы время поддерживаю и потихоньку рефакторю часть платформы интерактивного общения, а потому на этот раз делюсь способом сократить задержку до ответа на нелишних 0.2-0.4с.
Здесь случай, когда подумал на шажок дальше тривиального in-memory кэша, и за счёт persistent части можно при обнаружении проблемных частей генерации на лету их подменять более качественными прегенами просто дозагрузив их с ключом соответствующей фразы. Для сценариев с детерминированными ответами можно бесшовно полностью заиспользовать преген диктора к примеру
Любопытный технический элемент здесь, увлёкший меня на пару часов дак точно, как хранить озвучку?
Первым порывом было закидать монгу бинарниками, разумеется. Но как-то сумел себя сдержать, подраскинул мозгами и грустно осознал, что без S3 не обойтись. Вот так и обрастают проекты кучей инфры.
Следующей возникла не менее(не более?) здравая идея паковать весь неймспейс (по логике все записи, относящиеся к одному сценарию разговора) всё также в бинарку и хранить уже в s3. И это звучало прекрасно, за один запрос вытягивать и распаковывать всё необходимое, но когда бы возник сценарий апдейта одной фразы из пака - случился бы оверхед. Так что время инициализации было решено принести в жертву. Впрочем, ничего нового
П.с. И ещё чуть было не использовал питоновские футуры по назначению, но тоже передумал и остановился на коллбэке. Возможно это только мои загоны, но раньше практически не доводилось их использовать для выдачи результата работы асинхронного кода в явном виде.
Post #57
888


- 🔥 5
- 👍 1
- 🤔 1