【问题标题】:Running a python script with pm2 error运行带有 pm2 错误的 python 脚本
【发布时间】:2018-08-13 00:37:40
【问题描述】:

首先,对不起,如果这是重复的,我已经搜索过,找到了一些修复,但我很笨,无法申请。 我不是开发人员,程序员,只是想运行一个 python 脚本来做一些事情。我对 python 有基本的了解,所以跟我说话就像我很笨一样。

这些是使机器人运行的依赖项。运行 python3 bot.py 运行正常,但我需要一些东西来在程序死亡时重新启动程序,而 pm2 对于像我这样的白痴来说似乎很容易。

import discord
import asyncio
import datetime
import os
import json
import requests
from coinmarketcap import Market
from steem import Steem
from steem.post import Post
from steem.blog import Blog
from steem.instance import set_shared_steemd_instance
from steem.account import Account
from steem.steemd import Steemd
from discord.ext.commands import Bot
from discord.ext import commands

当我运行pm2 start bot.py 这就是我得到的 pm2 ls ┌──────┬──────┬─────────┬────┬─────┬────────┐ │ Name │ mode │ status │ ↺ │ cpu │ memory │ ├──────┼──────┼─────────┼────┼─────┼────────┤ │ bot │ fork │ errored │ 15 │ 0% │ 0 B

我已经读到 pm2 应该识别 .py 并运行脚本,那么为什么它不能像预期的那样工作呢?

pm2 -v 2.10.1 运行 ubuntu 16.04 LTS

【问题讨论】:

    标签: python node.js ubuntu pm2


    【解决方案1】:

    由于我还没有真正看到我的解决方案,也没有验证解决方案,所以我会给出我的解决方案。希望对您有所帮助!

    虽然 pm2 确实是为 Node.js 制作的,但它可以运行 Python 脚本。我已经做了一段时间了,还不错!

    我还读到 pm2 应该自动检测文件中的 .py,但根据我的经验,它在检测 python3 方面做得不好。在我的情况下,指定要使用的解释器会有所帮助。

    您可以通过添加以下参数来做到这一点:--interpreter python3。 所以在你的情况下,完整的命令是pm2 start bot.py --interpreter python3

    【讨论】:

      【解决方案2】:

      据我所知(我承认这并不全面),pm2 是专门为node.js 脚本开发的流程运行器/监视器/管理器。

      虽然似乎可以使用 pm2 管理 python 进程,但我从未听说有人这样做。

      对于您的问题,您可能会通过查看 pm2 记录其运行时信息的 ~/.pm2/logs 的内容来发现失败的原因。 (上面的 ~ 引用了您的 HOME 目录。)

      由于您可以自行运行脚本,我认为您可能遇到了文件路径问题。要进行分类,请创建一个名为 pm2-test.js 的脚本:

      console.log(JSON.stringify(process.env, null, 2))
      

      使用pm2 ./pm2-test.js --name "test" 运行它

      然后运行pm2 log test,它将pm2-test的输出日志打印到控制台。 (您需要CTRL-C 来阻止这种情况,因为它旨在不断流式传输新的日志条目。)

      请特别注意与PATH 相关或包含cannot locatenot found 等文本的任何错误。

      记得pm2 delete test将该进程从pm2的管理中删除。

      如果这两个日志没有为您提供足够的信息来解决问题,您可以尝试使用另一个进程监视器。

      有几个用python 编写的进程监视器,可以通过谷歌找到。

      由于我对其中任何一个都没有经验,并且我更喜欢专门针对手头问题编写的工具,因此我建议使用monit,它是一个易于设置的通用流程管理器/监视器,非常稳定,并且有许多可用的示例配置。

      【讨论】:

      • 你的回答已经很完整了,我就不补充了。但我会包括使用 python 2 而不是 3 的 pm2 的可能性。所以它可能会遇到一些 print 语句并且失败
      猜你喜欢
      • 2021-04-29
      • 1970-01-01
      • 2021-05-09
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      相关资源
      最近更新 更多