在 Django 中使用 pm2

rut*_*ydm 6 python django pm2

我刚刚从使用 NodeJS 的 Express 更改为使用 Python 的 Django。我对 NodeJS 唯一怀念的是出色的流程管理器 pm2。我可以在 Django 中使用 pm2 吗?

Ric*_*les 7

您可以定义一个 pm2 脚本,例如

pm2{name}.json

内容如下:

 {
  "apps": [
    {
      "name": "{name}",
      "cwd": "/srv/{name}",
      "args": "runserver",
      "script": "manage.py",
      "exec_mode": "fork",
      "exec_interpreter": "python"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

并运行它 pm2 start {name}

显然你需要{name}用你的项目名称替换。


Wto*_*wer 2

这确实是一个非常广泛的问题,但我想谈谈我个人的观点,因为我在我的项目中使用了这两个框架。

Express(nodejs)到django(python)

Express 和 Django 都是 Web 框架,但 Node 和 Python 不属于同一类别。你可以说 JS 和 Python 更好。Node是JS的运行环境,所以像pm2这样的工具可以有效地管理Node进程。

对于基于 Python 的 Web 项目,您需要选择一种方式(接口)来服务它们。常见的可能性是CGIWSGI

我不能谈论flask,但Django推荐的方式是WSGI。有几个选项,包括 mod_wsgi、uwsgi 和 Gunicorn。控制其流程的任何工具都取决于您选择的工具。

从这个意义上说,这又增加了一层复杂性。我建议您探索所有这些,阅读它们,可能测试它们并选择最适合您需求的一个。

我个人更喜欢 uwsgi,因为我发现它非常快,尤其是在负载下,如果主机如此配置(doh),有时还会使用 mod_wsgi。UWSGI 有一个出色的统计解决方案。

更不用说对于您最终使用 WSGI 的任何服务器都有很多工具。

话虽如此,对于简单请求,您将不会轻易达到节点的响应时间。但是,当节点中的事情变得复杂时(太多回调、太多查询等),时间就会变得非常相似。另一方面,一旦你掌握了 Django,你就会惊讶地发现,与 Node.js 的回调地狱和完全不成熟的数据层相比,你需要编写和维护代码的时间是多么少。