我刚刚从使用 NodeJS 的 Express 更改为使用 Python 的 Django。我对 NodeJS 唯一怀念的是出色的流程管理器 pm2。我可以在 Django 中使用 pm2 吗?
您可以定义一个 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}用你的项目名称替换。
这确实是一个非常广泛的问题,但我想谈谈我个人的观点,因为我在我的项目中使用了这两个框架。
Express(nodejs)到django(python)
Express 和 Django 都是 Web 框架,但 Node 和 Python 不属于同一类别。你可以说 JS 和 Python 更好。Node是JS的运行环境,所以像pm2这样的工具可以有效地管理Node进程。
对于基于 Python 的 Web 项目,您需要选择一种方式(接口)来服务它们。常见的可能性是CGI和WSGI。
我不能谈论flask,但Django推荐的方式是WSGI。有几个选项,包括 mod_wsgi、uwsgi 和 Gunicorn。控制其流程的任何工具都取决于您选择的工具。
从这个意义上说,这又增加了一层复杂性。我建议您探索所有这些,阅读它们,可能测试它们并选择最适合您需求的一个。
我个人更喜欢 uwsgi,因为我发现它非常快,尤其是在负载下,如果主机如此配置(doh),有时还会使用 mod_wsgi。UWSGI 有一个出色的统计解决方案。
更不用说对于您最终使用 WSGI 的任何服务器都有很多工具。
话虽如此,对于简单请求,您将不会轻易达到节点的响应时间。但是,当节点中的事情变得复杂时(太多回调、太多查询等),时间就会变得非常相似。另一方面,一旦你掌握了 Django,你就会惊讶地发现,与 Node.js 的回调地狱和完全不成熟的数据层相比,你需要编写和维护代码的时间是多么少。