首先,对不起,如果这是重复的,我已经搜索过,找到了一些修复但我愚蠢但无法申请。 我不是开发人员,程序员,只是试图运行一个做一些事情的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
答案 0 :(得分:2)
由于我还没有真正看到这个问题的解决方案,并且没有经过验证的解决方案,我会给我的。希望它有所帮助!
虽然pm2是针对Node.js的,但是可以运行Python脚本。我已经做了一段时间了,这很好!
我还读到pm2应该是自动检测文件中的.py
,但根据我的经验,它在检测python3方面做得不好。在我的情况下指定使用哪个解释器有帮助。
您可以通过添加以下参数来执行此操作:--interpreter python3
。
因此,在您的情况下,完整命令将是pm2 start bot.py --interpreter python3
。
答案 1 :(得分:0)
据我所知(我承认并不全面),pm2
是一个专为node.js
脚本开发的流程运行器/监视器/管理器。
虽然似乎可以使用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
这是一个易于使用的通用流程管理器/监控器设置,非常稳定,并且有很多可用的示例配置。