Я только что перешел с Express с NodeJS на Django с Python. Единственное, что мне не хватает в NodeJS - это замечательный менеджер процессов pm2. Могу ли я использовать pm2 с Django?

6
ruttydm 6 Янв 2017 в 17:52

3 ответа

Лучший ответ

Это действительно очень широкий вопрос, но мне бы хотелось, чтобы моя личная точка зрения использовалась в обеих проектах.

экспресс (nodejs) в джанго (питон)

Express и Django являются веб-фреймворками, но Node и Python не попадают в одну категорию. Вы могли бы сказать JS и Python лучше. Node - это среда выполнения для JS, поэтому такой инструмент, как pm2, эффективно управляет процессами Node.

Для веб-проектов на основе Python необходимо выбрать способ (интерфейс) их обслуживания. Общие возможности: CGI и WSGI.

Я не могу говорить о колбе, но Django рекомендует WSGI. Есть несколько вариантов, включая mod_wsgi, uwsgi и gunicorn. Любой инструмент для управления своими процессами зависит от того, что вы выберете.

В этом смысле это на один уровень сложности больше. Я бы порекомендовал вам изучить все из них, прочитать о них, возможно, протестировать их и выбрать тот, который лучше всего подходит для ваших нужд.

Я лично предпочитаю uwsgi, потому что я нахожу это очень быстро, особенно под нагрузкой, и иногда mod_wsgi, если хост настроен так (дох). UWSGI предлагает отличную статистику.

Не говоря уже о том, что есть много инструментов для любого сервера, который вы в конечном итоге используете с WSGI.

Сказав это, вы не будете легко достичь времени отклика узла для простых запросов. Но когда в узле все усложняется (слишком много обратных вызовов, слишком много запросов и т. Д.), Тогда времена становятся довольно похожими. С другой стороны, как только вы освоите Django, вы будете поражены тем, как мало времени вам нужно для написания и поддержки кода по сравнению с адом обратного вызова и совершенно незрелым уровнем данных Node.

1
Wtower 6 Янв 2017 в 16:46
 {
  "apps": [
    {
      "name": "{name}",
      "cwd": "/srv/{name}",
      "args": "runserver",
      "script": "manage.py",
      "exec_mode": "fork",
      "exec_interpreter": "python"
    }
  ]
}
-1
sindhu 26 Окт 2017 в 10:19

Вы можете определить скрипт 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} на имя вашего проекта.

2
Richard Miles 29 Авг 2017 в 10:20