在 Django 中使用 pm2
Use pm2 with Django
我刚刚从使用 NodeJS 的 Express 更改为使用 Python 的 Django。我唯一想念 NodeJS 的是出色的进程管理器 pm2。我可以将 pm2 与 Django 一起使用吗?
这确实是一个很宽泛的问题,但是我想谈谈我个人的观点,因为我在我的项目中使用了这两个框架。
express(nodejs) to django(python)
Express 和Django 都是Web 框架,但是Node 和Python 不属于同一类。你可以说 JS 和 Python 更好。 Node是JS的运行环境,所以像pm2这样的工具可以有效管理Node进程。
对于基于 Python 的 Web 项目,您需要 select 一种方式(接口)来为它们提供服务。常见的可能性是 CGI and WSGI.
我不能谈论flask,但Django 推荐的方式是WSGI。有几个选项,包括 mod_wsgi、uwsgi 和 gunicorn。任何控制其流程的工具都取决于您的选择。
从这个意义上说,这更复杂了一个层次。我建议您探索所有这些,阅读它们,可能测试它们并选择最适合您需要的一个。
我个人更喜欢 uwsgi,因为我发现它非常快,尤其是在负载下,有时 mod_wsgi 如果主机如此配置 (doh)。 UWSGI 有一个 excellent stats 解决方案。
更不用说,对于您最终使用 WSGI 的任何服务器,都有许多工具。
话虽如此,对于简单的请求,您将不会轻易达到节点的响应时间。但是当节点中的事情变得复杂时(太多的回调,太多的查询等)然后时间变得非常相似。另一方面,一旦你掌握了 Django,你就会惊讶于与 Node 的回调地狱和完全不成熟的数据层相比,你需要编写和维护代码的时间是多么少。
您可以定义一个 pm2 脚本,例如
pm2{name}.json
内容如下:
{
"apps": [
{
"name": "{name}",
"cwd": "/srv/{name}",
"args": "runserver",
"script": "manage.py",
"exec_mode": "fork",
"exec_interpreter": "python"
}
]
}
和运行它与pm2 start {name}
显然您需要将 {name}
替换为您的项目名称。
{
"apps": [
{
"name": "{name}",
"cwd": "/srv/{name}",
"args": "runserver",
"script": "manage.py",
"exec_mode": "fork",
"exec_interpreter": "python"
}
]
}
步骤
npm install npm@latest -g
- 运行 此命令用于在服务器计算机上不间断地执行 django 应用程序
pm2 start echosystem.config.json
Description of echosystem.config.json
{
apps:
[{
name: "djnago_with_pm2",
script: "manage.py",
args: ["runserver", "127.0.0.1:8000"],
exec_mode: "fork",
instances: "1",
wait_ready: true,
autorestart: false,
max_restarts: 5,
interpreter : "python"
}]
}
如果我们必须改变我们的django应用程序的端口号,那么我们可以改变
echosystem.config.json
文件的 args 属性中的端口号。
在 echosystem.config.json
文件中完成更改后,使用
停止服务器
列表项
pm2 命令如下:
pm2 stop all
// 此命令将停止所有服务器。
pm2 stop 0
// 如果你知道 pm2 id 然后执行这样的命令。
pm2 start echosystem.config.json
// 再次启动 django 应用程序。
从这里下载完整的示例项目django_with_pm2
我刚刚从使用 NodeJS 的 Express 更改为使用 Python 的 Django。我唯一想念 NodeJS 的是出色的进程管理器 pm2。我可以将 pm2 与 Django 一起使用吗?
这确实是一个很宽泛的问题,但是我想谈谈我个人的观点,因为我在我的项目中使用了这两个框架。
express(nodejs) to django(python)
Express 和Django 都是Web 框架,但是Node 和Python 不属于同一类。你可以说 JS 和 Python 更好。 Node是JS的运行环境,所以像pm2这样的工具可以有效管理Node进程。
对于基于 Python 的 Web 项目,您需要 select 一种方式(接口)来为它们提供服务。常见的可能性是 CGI and WSGI.
我不能谈论flask,但Django 推荐的方式是WSGI。有几个选项,包括 mod_wsgi、uwsgi 和 gunicorn。任何控制其流程的工具都取决于您的选择。
从这个意义上说,这更复杂了一个层次。我建议您探索所有这些,阅读它们,可能测试它们并选择最适合您需要的一个。
我个人更喜欢 uwsgi,因为我发现它非常快,尤其是在负载下,有时 mod_wsgi 如果主机如此配置 (doh)。 UWSGI 有一个 excellent stats 解决方案。
更不用说,对于您最终使用 WSGI 的任何服务器,都有许多工具。
话虽如此,对于简单的请求,您将不会轻易达到节点的响应时间。但是当节点中的事情变得复杂时(太多的回调,太多的查询等)然后时间变得非常相似。另一方面,一旦你掌握了 Django,你就会惊讶于与 Node 的回调地狱和完全不成熟的数据层相比,你需要编写和维护代码的时间是多么少。
您可以定义一个 pm2 脚本,例如
pm2{name}.json
内容如下:
{
"apps": [
{
"name": "{name}",
"cwd": "/srv/{name}",
"args": "runserver",
"script": "manage.py",
"exec_mode": "fork",
"exec_interpreter": "python"
}
]
}
和运行它与pm2 start {name}
显然您需要将 {name}
替换为您的项目名称。
{
"apps": [
{
"name": "{name}",
"cwd": "/srv/{name}",
"args": "runserver",
"script": "manage.py",
"exec_mode": "fork",
"exec_interpreter": "python"
}
]
}
步骤
npm install npm@latest -g
- 运行 此命令用于在服务器计算机上不间断地执行 django 应用程序
pm2 start echosystem.config.json
Description of echosystem.config.json
{
apps:
[{
name: "djnago_with_pm2",
script: "manage.py",
args: ["runserver", "127.0.0.1:8000"],
exec_mode: "fork",
instances: "1",
wait_ready: true,
autorestart: false,
max_restarts: 5,
interpreter : "python"
}]
}
如果我们必须改变我们的django应用程序的端口号,那么我们可以改变
停止服务器echosystem.config.json
文件的 args 属性中的端口号。 在echosystem.config.json
文件中完成更改后,使用列表项
pm2 命令如下:
pm2 stop all
// 此命令将停止所有服务器。pm2 stop 0
// 如果你知道 pm2 id 然后执行这样的命令。pm2 start echosystem.config.json
// 再次启动 django 应用程序。
从这里下载完整的示例项目django_with_pm2