Попытка оптимизировать скорость загрузки приложения R Shiny - Slow googlesheets4 pull - PullRequest
0 голосов
/ 30 марта 2020

В настоящее время я работаю над приложением R Shiny, которое использует googlesheets4, чтобы получить большой набор данных из GoogleSheets при запуске приложения. Загрузка этого набора данных в мое приложение занимает ~ 2 минуты, что останавливает время загрузки всего моего приложения.

Единственный визуальный элемент в моем приложении основан на этих данных GoogleSheets, поэтому он очень зависит от этого параметра c набор данных. Как только набор данных попадает в мое приложение, он становится фильтром и, следовательно, становится намного меньше (85 000 строк -> 1000 строк). Эти данные GoogleSheet обновляются каждый день, поэтому я не могу позволить себе предварительно загрузить их один раз и сохранить как .csv навсегда.

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

  1. Есть отдельное приложение, работающее . Моя первая идея состояла в том, чтобы полностью создать отдельное приложение Shiny, единственной целью которого было бы использование GoogleSheets df раз в день. Как только он потянет его, он проведет необходимую очистку данных, чтобы уменьшить его до ~ 1000 строк, а затем высветит sh меньшего значения df на другую ссылку GoogleSheet. Тогда мое оригинальное приложение с визуальным интерфейсом всегда будет ссылаться на этот новый GoogleSheet (на загрузку которого уйдет гораздо меньше времени).

Проблема, с которой я столкнулся, заключается в том, что я не мог понять, Как написать новый GoogleSheets сделать c с помощью googlesheets4. Если у кого-то есть идеи, как это сделать, это будет высоко оценено.

Временно задержите загрузку данных GoogleSheets и дайте визуальному заполнению сначала . Моя вторая идея заключалась в том, чтобы сделать так, чтобы код, который извлекает данные из GoogleSheets df, был отложен при запуске, что позволило моему визуальному элементу сначала заполниться (используя старые данные), а затем выполнить тягу GoogleSheets. После того, как извлечение завершено, визуально заполняйте обновленными данными.

Я не мог найти лучший / правильный способ сделать это. Я пытался возиться с sleep.sys () и фьючерсами / обещаниями, но не мог заставить вещи работать правильно.

Интересно, есть ли у кого-нибудь какие-нибудь мысли по поводу моих двух разных подходов, или если есть лучший подход, я бы ' Я просто не думаю ...

Спасибо!

...