【问题标题】:How to write code that runs in the "background" indefinitely如何编写无限期在“后台”运行的代码
【发布时间】:2020-04-26 01:19:42
【问题描述】:

我可以访问具有最低请求限制的 API,并且我计划将此 API 中的一些数据显示到我的网络应用程序中。但是,我不希望用户必须向此端点发起请求,因为这将使我更快地达到每日上限,甚至可能禁止我的帐户。

我的解决方案是编写一些 js 代码,每隔一段时间向 api 发送请求,并使用返回的数据更新 mongodb 集群,因此用户不是直接访问 api 端点,而是从会话存储中访问数据,即使用来自 mongodb 集群的数据定期更新。

问题是,我不知道它的实现是什么样的。代码必须独立于客户端运行,并且无论网页当前是否被访问都必须继续运行。欢迎任何想法。

【问题讨论】:

  • 只需使用 Javascript 计时器事件。您可以在 Javascript 文档中找到它。 (提示:setTimeoutsetInterval)。
  • 你可以使用window.setInterval函数来做到这一点。
  • 这听起来很像缓存。

标签: javascript mongodb frontend backend


【解决方案1】:

由于请求的限制和有关 API 机密的安全问题,这需要在服务器端运行。

由于这需要在服务器上执行,并且您提到了 Javascript,我将假设为 npm。您正在寻找heartbeat eventscron 或类似的东西。您的服务器将轮询 API,并且您的客户端将需要反复收到更改通知,方法是从客户端轮询以下载您的服务器知道的最新信息,或者甚至创建一些 websocket 通道或推送通知。

【讨论】:

    【解决方案2】:

    这将每五秒运行一次

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

    【讨论】:

    • 代码必须在服务器端,因此在任何给定时间只能运行它的 1 个实例。
    【解决方案3】:

    这样做的唯一方法是设置一个单独的应用程序,该应用程序按设定的时间间隔运行。就个人而言,我通过创建一个小型控制台应用程序来实现这一点,然后我将系统配置为通过 cron 作业运行。

    在不知道您有什么类型的后端可用的情况下,很难提供代码答案,但是您所要做的就是创建可以执行的东西。在该代码中,您只需调用外部 API,然后将结果存储在您自己的数据库中。编写完代码后,您可以设置计时器事件/cron 作业(取决于您的系统)并将其设置为以您需要的任何时间间隔运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多