相关疑难解决方法(0)

一起使用pm2和docker有什么意义?

我们已经成功地使用pm2在服务器上运行应用程序。我们目前正在迁移到docker,我们看到了 http://pm2.keymetrics.io/docs/usage/docker-pm2-nodejs/

但是,将两者一起使用的意义何在?码头工人不提供pm2所做的一切吗?

docker pm2

21
推荐指数
2
解决办法
8902
查看次数

使用node.js pm2在虚拟环境中运行python脚本

我想引用这个问题,因为我确信有人会将此标记为重复.

我不是在寻找另一个对supervisord的引用.我确信它很棒,但节点PM2具有我需要的功能,并且更容易实现和测试.

手动启动

在原型设计过程中,我创建了一个名为"p3env"的虚拟环境.在每个脚本的顶部,我放置一个bash指令:

#!./py3env/bin/python
Run Code Online (Sandbox Code Playgroud)

这允许我使用这个特定的python环境执行目录中的每个脚本,而不必激活它.这是非常方便和有用的,当我手动启动时,python脚本运行良好.

当我说"手工启动"时,我应该清楚我的意思.我的脚本叫做'strain_to_db.py'.当我手动启动时,我通过ssh在shell上:

./strain_to_db.py
Run Code Online (Sandbox Code Playgroud)

这使得我需要工作的一切工作.

PM2开始

从相对路径移动到绝对路径

为了让pm2工作,我开始:

pm2 start ./strain_to_db.py
Run Code Online (Sandbox Code Playgroud)

指定解释器

显然pm2忽略了python脚本顶部的指令,并尝试使用全局'python'执行.没问题,我可以指定解释器:

pm2 start ./strain_to_db.py --interpreter /home/ubuntu/db_if/p3env/bin/python
Run Code Online (Sandbox Code Playgroud)

没有骰子.再次,也许尝试更多的绝对路径:

pm2 start /home/ubuntu/db_if/strain_to_db.py --interpreter /home/ubuntu/db_if/p3env/bin/python
Run Code Online (Sandbox Code Playgroud)

将脚本作为命令行选项运行

现在我感到很沮丧.我尝试了另一种策略.我尝试使用以下命令在命令行中运行python可执行文件:

/home/ubuntu/db_if/p3env/bin/python /home/ubuntu/db_if/strain_to_db.py
Run Code Online (Sandbox Code Playgroud)

当没有涉及pm2时,这很好用.当我尝试使用'命令行参数'样式将其传递给pm2时:

pm2 start /home/ubuntu/db_if/p3env/bin/python -- /home/ubuntu/db_if/strain_to_db.py
Run Code Online (Sandbox Code Playgroud)

挫折

同样的错误.错误总是'无法导入pymysql',它只安装在虚拟环境中.

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

python ubuntu node.js pm2

9
推荐指数
3
解决办法
6564
查看次数

标签 统计

pm2 ×2

docker ×1

node.js ×1

python ×1

ubuntu ×1