【问题标题】:How can I implement my node application that needs to be constantly running?如何实现需要不断运行的节点应用程序?
【发布时间】:2018-07-10 05:59:04
【问题描述】:

我已经使用 node 和 phantom.js 构建了一个简单的应用程序(循环),它会在网络上抓取一些数据并定期通过电子邮件向我发送新结果。

目前我在本地终端中运行该命令,只要窗口打开,它就会继续运行。我的问题是我应该如何实现一个界面(最有可能是网络应用程序),以便我可以输入我的参数并让它即使在我离开页面时也能运行?

我听说过一个名为“forever”的包,但如果有人能向我解释一下,我不确定它是如何工作的。

我有自己的共享主机,但在概念上我对如何实现这一点感到困惑。我可以将我的代码推送到 heroku,但我应该从那里创建一个简单的仪表板来启动和停止我的网络 scraper 循环吗? Heroku 需要在闲置一个小时后启动,这样可能无法正常工作。

我的应用目前只是从命令行获取参数,所以我显然不得不从输入字段或其他东西中获取数据。

需要做什么的高级概念会很有帮助。

【问题讨论】:

标签: javascript node.js


【解决方案1】:

我认为PM2 是答案:)

您可以在系统中管理您的节点应用程序,例如您可以启动一个节点项目:

pm2 start app.js

并列出您当前的流程

pm2 list

等等……

【讨论】:

  • 这将如何帮助我将我的应用程序连接到前端,以便我打开和关闭我的刮刀?
  • 您始终可以创建一个快速应用程序,公开一些端点并创建一个带有表单的前端应用程序,以通过这些端点发送参数。我认为你必须先停下来想想你真正想做的事情。有太多的可能性......祝你好运!
  • 我很乐意做这一切,但让我感到困惑的是,我发帖的原因是我不确定在关闭前端网页后如何保持服务器功能保持活力......跨度>
【解决方案2】:

我从未使用过 Heroku,但您可以创建一个快速服务器并使用 Ngrok 公开应用程序。

您可以通过这种方式创建一个 html 页面并通过 Ngrok 访问该应用程序。

这是一个链接:https://ngrok.com/

快速概览:
1) 创建并运行本地快递服务器
2) 运行 ngrok 隧道服务(ngrok http 服务器端口
3) ngrok 然后会返回一个 url,有点像哈希码,你可以用它从任何地方访问你的应用程序

我不确定 ngrok 公共服务器会存活多久,根据我的经验,只要我有进程运行它就会一直存在。

其他选项是直接在 AWS 等 Web 服务上托管应用程序,并公开端点 - 但如果您不熟悉,则需要学习一些知识。

【讨论】:

  • 我以前使用过 ngrok,但用于在我的其他设备上测试网站以通过隧道连接到我的本地主机。我认为您不了解我要完成的工作,并且不确定 ngrok 在这种情况下将如何提供帮助。我正在寻找一种方法,让我的应用程序不仅可以在本地计算机上运行和访问。
  • ngrok 将其暴露在您的本地计算机之外。
【解决方案3】:

您可以使用Glitch 进行托管。它是免费的,isn't going anywhere(因此您不必担心它只是一个临时解决方案),并且非常适合 Node 应用程序,尽管有一些 technical restrictions(您需要设置一些东西来自动 ping您的应用程序,只是为了保持运行)。

只需使用express 之类的内容设置一个网页,其中包含几个输入和启动/停止按钮。那些会将请求发送到服务器(GET 请求可能是最容易使用的),然后当您单击开始时,它可以使用您的输入作为参数运行函数,当您单击停止时,它可以以某种方式取消该函数或只是杀死节点进程。

这样,即使您的计算机处于关闭状态,您也应该能够(理论上)无限地运行您的应用程序。 PM2 和 Forever 之类的东西会在窗口关闭时让您的应用程序继续运行,但据我所知,除非涉及某种魔法,否则如果您的计算机关闭,它们不会做太多事情。

【讨论】:

  • 我觉得你的解释最接近我的目标。我不完全理解的是,在我关闭我的快速应用程序后,我将如何保持进程运行。使用 Forever 或 PM2,主机将永远不会被关闭,所以这不起作用吗?同样,我不只是希望我的应用程序在本地运行,我最好将它托管在我的共享主机或 Heroku 或其他东西上。
  • @TaylorA.Leach 基本上,总结一下我删除的 cmets - Glitch 的工作方式略有不同,因此它可以保持免费(但仍然工作良好),如果你设置了一些东西来自动 ping 你的项目每隔几分钟,它应该在没有 Forever 或 PM2 的情况下保持在线。如果您计划在 Glitch 以外的其他设备上运行 Node,您可能需要其中之一。 Express 在 Node 服务器上运行,并且只是响应请求。它根本不需要前端保持打开状态。不用担心您的应用程序会在您关闭浏览器时停止。
  • 感谢您的信息。我将创建一个简单的 express 应用程序并将其放在 Heroku 上,因为我熟悉该设置。如果我每隔一段时间对应用程序执行 ping 操作,它将阻止测功机进入睡眠状态。我认为我的困惑源于我没有完全理解在服务器文件中调用我的节点函数之一将持续运行,直到我手动停止它。我想通过使用标志来停止按下按钮或其他东西的连续循环。
猜你喜欢
  • 1970-01-01
  • 2013-01-27
  • 2013-05-06
  • 2022-06-29
  • 2018-02-20
  • 2020-10-11
  • 1970-01-01
  • 2017-01-21
相关资源
最近更新 更多