Как написать код, который работает в фоновом режиме до бесконечности - PullRequest
2 голосов
/ 26 апреля 2020

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

Мое решение - написать некоторый код js, который отправляет запросы в API через определенные промежутки времени и обновляет кластер mongodb возвращенными данными, поэтому вместо пользователей, напрямую обращающихся к конечной точке api, они получают доступ к данным из своего хранилища сеансов, которое периодически обновляется данными из кластера mongodb.

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

Ответы [ 3 ]

0 голосов
/ 26 апреля 2020

Единственный способ сделать это - настроить отдельное приложение, которое запускается с заданным интервалом. Лично я выполняю sh, создав небольшое консольное приложение, которое затем настраиваю систему для запуска через задание cron.

Не зная, какой тип бэкэнда у вас есть, сложно предоставить код Ответ, однако все, что вам нужно сделать, это создать что-то, что может быть выполнено. В этом коде вы просто вызываете внешний API и затем сохраняете результаты в своей собственной базе данных. После того, как вы написали этот код, вы можете настроить таймер событий / задание cron (в зависимости от вашей системы) и настроить его запуск с любым необходимым интервалом.

0 голосов
/ 26 апреля 2020

Это должно выполняться на стороне сервера из-за ограничения запросов и проблем безопасности в отношении секретов API.

Поскольку это необходимо выполнить на сервере, а вы упомянули Javascript, я буду предположим npm. Вы ищете события сердцебиения , или cron , или что-то подобное. Ваш сервер будет опрашивать API, и ваши клиенты должны будут неоднократно получать уведомления об изменениях, либо опрашивая со стороны клиента, чтобы загрузить последнюю информацию, известную вашему серверу, либо даже создать несколько каналов веб-сокетов, либо pu * 1010. * уведомления.

0 голосов
/ 26 апреля 2020

Это будет выполняться каждые пять секунд

setInterval(function(){ /*your logic here */ }, 5000);
...