2017-01-06 7 views
0

Ich habe gerade von Express mit NodeJS nach Django mit Python geändert. Das einzige, was ich an NodeJS vermisse, war der wunderbare Prozessmanager pm2. Kann ich PM2 mit Django verwenden?Verwenden Sie pm2 mit Django

+0

Schritt eins ist Django * oder * Flask auszuwählen. Wir werden nicht so ein breites Thema behandeln, aber es ist noch schlimmer, uns zu fragen, ob wir es in zwei verschiedenen Frameworks behandeln wollen. Diese Frage ist viel zu weit und unklar. Siehe [fragen]. – davidism

+0

@davidism Ich dachte, es wäre das gleiche für die beiden, ich werde es bearbeiten. – ruttydm

Antwort

0

Dies ist in der Tat eine sehr weit gefasste Frage, aber ich möchte meine persönliche Sichtweise, weil ich beide Frameworks in meinen Projekten verwende.

express (NodeJS) django (Python)

Express und Django sind beide Web-Frameworks, aber Knoten und Python nicht in der gleichen Kategorie fallen. Sie könnten JS und Python besser sagen. Node ist eine Laufzeitumgebung für JS, so dass ein Tool wie pm2 die Node-Prozesse effektiv verwaltet.

Für auf Python basierende Webprojekte müssen Sie einen Weg (Schnittstelle) auswählen, um sie zu bedienen. Gemeinsame Möglichkeiten sind CGI und WSGI.

Ich kann nicht über Flasche reden, aber Django empfohlene Weg ist WSGI. Es gibt verschiedene Optionen, einschließlich mod_wsgi, uwsgi und gunicorn. Jedes Werkzeug, um ihre Prozesse zu steuern, hängt davon ab, welchen Sie wählen.

In diesem Sinne ist dies eine Ebene der Komplexität mehr. Ich würde dir empfehlen, sie alle zu erforschen, über sie zu lesen, sie möglicherweise zu prüfen und das zu wählen, das für deine Bedürfnisse am besten ist.

Ich persönlich bevorzuge uwsgi, weil ich es sehr schnell finde, vor allem unter Last, und manchmal mod_wsgi, wenn der Host so konfiguriert ist (doh). UWSGI hat eine excellent stats Lösung.

Nicht zu erwähnen, dass es viele Tools für jeden Server gibt, den Sie mit WSGI verwenden.

Damit werden Sie nicht leicht die Reaktionszeiten von Knoten für einfache Anfragen erreichen. Aber wenn im Knoten Dinge kompliziert werden (zu viele Rückrufe, zu viele Abfragen usw.), dann werden die Zeiten ziemlich ähnlich. Auf der anderen Seite werden Sie, sobald Sie Django verstehen, überrascht sein, wie wenig Zeit Sie brauchen, um Code zu schreiben und zu pflegen, verglichen mit der Callback-Hölle und der völlig unreifen Datenschicht von Node.

+0

Vielen Dank! Ich bin ein bisschen neu in der Python-Welt.Manche Dinge sind mir sehr fremd. In Nodejs könnten Sie viele Pakete stapeln und sie in einer js-Datei verwenden. Aber in Python habe ich keine Idee, wie zum Beispiel Scrapy und Django zu mischen. – ruttydm

+0

Willkommen! Was meinst du Stack-Pakete? Ich bin mit scrappy nicht vertraut, aber ich finde die Wiederverwendbarkeit von Code und Paketen in Python weitaus einfacher. Nehmen wir zum Beispiel an, wenn Sie in einem Knoten einige Sequelize- oder Mungo-Modelle in wiederverwendbare Module erweitern müssen ... – Wtower

0

Sie können eine PM2 Skript definieren beispiels

pm2{name}.json

mit folgendem Inhalt:

{ 
 
    "apps": [ 
 
    { 
 
     "name": "{name}", 
 
     "cwd": "/srv/{name}", 
 
     "args": "runserver", 
 
     "script": "manage.py", 
 
     "exec_mode": "fork", 
 
     "exec_interpreter": "python" 
 
    } 
 
    ] 
 
}

und führen Sie es mit pm2 start {name}

offensichtlich müssen Sie {name} durch den Namen Ihres Projekts ersetzen.

-1

{ 
 
    "apps": [ 
 
    { 
 
     "name": "{name}", 
 
     "cwd": "/srv/{name}", 
 
     "args": "runserver", 
 
     "script": "manage.py", 
 
     "exec_mode": "fork", 
 
     "exec_interpreter": "python" 
 
    } 
 
    ] 
 
}