运行 有 pm2 错误的 python 脚本
Running a python script with pm2 error
首先,抱歉,如果这是重复的,我搜索过,找到了一些修复程序,但我很笨,无法应用。
我不是开发人员、程序员,只是想 运行 一个可以做一些事情的 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
据我所知(我承认这并不全面),pm2
是一个专门为 node.js
脚本开发的进程 runner/monitor/manager。
虽然似乎可以使用 pm2 管理 python
进程,但我从未听说有人这样做。
对于您的问题,您可能会通过查看 ~/.pm2/logs
的内容来发现失败的原因,这是 pm2 记录其 运行 时间信息的地方。 (上面的 ~
引用您的 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 locate
或 not found
.
等文本的任何错误
记得 pm2 delete test
从 pm2 的管理中删除进程。
如果这两个日志没有提供足够的信息来解决问题,您可以尝试使用另一个进程监视器。
在python
中写了几个进程监视器,可以通过Google找到。
由于我对它们都没有任何经验,而且我倾向于更喜欢专门针对手头问题编写的工具,因此我建议使用 monit
这是一个通用过程 manager/monitor易于 set-up,非常稳定,并且有大量可用的示例配置。
由于我还没有真正看到我解决这个问题的方法,也没有经过验证的解决方案,所以我会给出我的。希望对您有所帮助!
虽然 pm2 确实是为 Node.js 制作的,但可以 运行 Python 脚本。做了一段时间了,还不错!
我还读到 pm2 应该是 auto-detecting 你文件中的 .py
,但根据我的经验,它在检测 python3 方面做得不好。指定要使用的解释器对我的情况有帮助。
您可以通过添加以下参数来执行此操作:--interpreter python3
。
所以在你的情况下,完整的命令是 pm2 start bot.py --interpreter python3
.
首先,抱歉,如果这是重复的,我搜索过,找到了一些修复程序,但我很笨,无法应用。 我不是开发人员、程序员,只是想 运行 一个可以做一些事情的 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
据我所知(我承认这并不全面),pm2
是一个专门为 node.js
脚本开发的进程 runner/monitor/manager。
虽然似乎可以使用 pm2 管理 python
进程,但我从未听说有人这样做。
对于您的问题,您可能会通过查看 ~/.pm2/logs
的内容来发现失败的原因,这是 pm2 记录其 运行 时间信息的地方。 (上面的 ~
引用您的 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 locate
或 not found
.
记得 pm2 delete test
从 pm2 的管理中删除进程。
如果这两个日志没有提供足够的信息来解决问题,您可以尝试使用另一个进程监视器。
在python
中写了几个进程监视器,可以通过Google找到。
由于我对它们都没有任何经验,而且我倾向于更喜欢专门针对手头问题编写的工具,因此我建议使用 monit
这是一个通用过程 manager/monitor易于 set-up,非常稳定,并且有大量可用的示例配置。
由于我还没有真正看到我解决这个问题的方法,也没有经过验证的解决方案,所以我会给出我的。希望对您有所帮助!
虽然 pm2 确实是为 Node.js 制作的,但可以 运行 Python 脚本。做了一段时间了,还不错!
我还读到 pm2 应该是 auto-detecting 你文件中的 .py
,但根据我的经验,它在检测 python3 方面做得不好。指定要使用的解释器对我的情况有帮助。
您可以通过添加以下参数来执行此操作:--interpreter python3
。
所以在你的情况下,完整的命令是 pm2 start bot.py --interpreter python3
.