【发布时间】:2016-07-05 13:52:28
【问题描述】:
我想引用this question,因为我确信有人会将其标记为重复。
我不是在寻找对supervisord 的其他引用。我确信它很棒,但是节点 PM2 具有我需要的功能,并且更易于实现和测试。
手动启动
在原型设计期间,我创建了一个名为“p3env”的虚拟环境。在每个脚本的顶部,我放置了一个 bash 指令:
#!./py3env/bin/python
这允许我使用这个特定的 python 环境执行目录中的每个脚本,而无需激活它。非常方便好用,手动启动python脚本效果很好。
当我说“手动启动”时,我应该清楚我的意思。我的脚本称为“strain_to_db.py”。当我手动启动它时,我通过 ssh 在 shell 上:
./strain_to_db.py
这让我需要工作的一切正常工作。
PM2 开始
从相对路径移动到绝对路径
为了让 pm2 正常工作,我开始使用:
pm2 start ./strain_to_db.py
指定解释器
显然 pm2 忽略了 python 脚本顶部的指令并尝试使用全局“python”执行。没问题,我可以指定解释器:
pm2 start ./strain_to_db.py --interpreter /home/ubuntu/db_if/p3env/bin/python
没有骰子。再次,也许尝试更多的绝对路径:
pm2 start /home/ubuntu/db_if/strain_to_db.py --interpreter /home/ubuntu/db_if/p3env/bin/python
将脚本作为命令行选项运行
现在我越来越沮丧。我尝试另一种策略。我尝试使用以下命令在命令行中运行 python 可执行文件:
/home/ubuntu/db_if/p3env/bin/python /home/ubuntu/db_if/strain_to_db.py
当不涉及 pm2 时,这可以正常工作。当我尝试使用“命令行参数”样式将其传递给 pm2 时:
pm2 start /home/ubuntu/db_if/p3env/bin/python -- /home/ubuntu/db_if/strain_to_db.py
沮丧
同样的错误。报错总是'can't import pymysql',只安装在虚拟环境中。
我不知道还能去哪里。我有几个要添加到 pm2 执行监视器的脚本,但我似乎无法让其中一个正确启动和运行。
【问题讨论】: