使用node.js pm2

时间:2016-03-18 17:25:50

标签: python node.js ubuntu pm2

我想引用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

挫折

同样的错误。该错误始终无法导入pymysql',它只安装在虚拟环境中。

我不知道还有什么可以用的。我有几个脚本要添加到pm2执行监视器,但我似乎无法让其中一个脚本启动并正确运行。

2 个答案:

答案 0 :(得分:16)

再看一遍之后,电子邮件顶部的question that I referenced在其中一个答案中找到了线索,但不是答案。

当文件以'.py'结尾时,pm2会调用'python'......无论如何。我相信pm2中有一个配置文件可以修改以更改此行为。我只是从我的脚本中删除了“.py”并指定了解释器:

pm2 start ./strain_to_db --interpreter ./py3env/bin/python

完美无缺。当我使用pm2创建启动脚本时,我将使用绝对路径。感谢所有正在寻找的人,我希望这有助于将来的某个人。

答案 1 :(得分:2)

这篇中型文章为我解决了这个问题。

https://medium.com/@gokhang1327/deploying-flask-app-with-pm2-on-ubuntu-server-18-04-992dfd808079

在虚拟环境中运行python脚本的命令:

emit(..... room=usersid

-名称是可选的,即以pm2状态显示的进程名称

结果:

enter image description here

“新”是我的virtualenv环境的名称。