首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PM2 API中的PM2删除函数问题

PM2 API中的PM2删除函数问题
EN

Stack Overflow用户
提问于 2021-06-11 12:07:23
回答 1查看 395关注 0票数 1

我的PM2(5.1.0版) pm2.delete(process, errback)函数遇到了一个非常恼人的问题。经过两天的调试,试图找到问题的根源,它开始看起来像一个与PM2库本身相关的问题。

这里是我正在做的事情的简化代码片段。我稍后会解释这个问题。

代码语言:javascript
复制
const debug = require("debug")("...");
const pm2 = require("pm2");
const Database = require("./Database");

...

class Backend {
  static cleanup() {
    return new Promise((resolve, reject) => {
      pm2.connect((error) => {
        if (error) {
          debug("...");

          reject();

          return;
        }

        // MongoDB query and async forEach iteration
        Database.getCollection("...").find({
          ...
        })
        .forEach((document) => {
          pm2.delete("service_...", (error, process) => {
            if (!error && process[0].pm2_env.status === "stopped") {
              debug("...");
            } else {
              debug("...");
            }
          });
        })
        .catch(...)
        .then(...);
      }
    });
  }

  ...
}

现在是问题:我的进程没有被终止,errback of pm2.delete(process, errback)根本没有被执行。

  • I打印了connect回调的错误参数,并且始终是null,因此成功地建立了到PM2的连接,我将调试文本直接放置在delete回调的开头,并且没有打印
  • ,而是在执行delete回调至少一次且循环永久运行
  • 时停止delete函数,并注意到node_modules/pm2/lib/API.js (第533行)中的PM2's delete函数被调用,但由于某些原因,进程没有终止,而且我提供的回调函数根本没有执行(我在调试模式下逐个执行了这些命令,但仍然无法知道它在哪里无法执行回调(虽然它似乎发生在PM2 2的API.js中)
  • ),我还注意到,当在调试模式下逐步运行代码时,有时我的进程会被API调用终止,如果我在两者之间的某个点取消了执行(但是,
  • ,我在软件的另一个地方也使用了PM2 2的删除函数,在那里它就像一个魅力

一样工作。

因此,由于某些原因,pm2.delete(process, errback)没有正确地执行,我不知道此时该做什么。是否有人对PM2的源代码有经验,或者在某个时候有过类似的问题?任何建议都会有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-11 16:50:52

看来我找到了问题的根源:

在承诺链的稍后阶段,在forEach调用之后,我使用pm2.disconnect();。经过进一步研究,我注意到它不是完全同步的,这意味着在删除函数完全完成之前,PM2就会断开连接。这给出了描述的结果和奇怪的调试行为。

总之,API工作非常好,但是我们必须非常关注异步代码,因为它会导致非常复杂的行为,这也很难调试。

必须确保在调用pm2.disconnect();之前确实完成了delete函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67936763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档