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
Antwort
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.
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
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
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.
{
"apps": [
{
"name": "{name}",
"cwd": "/srv/{name}",
"args": "runserver",
"script": "manage.py",
"exec_mode": "fork",
"exec_interpreter": "python"
}
]
}
- 1. Wie verwenden Sie pm2 Start mit einem Nicht-Root-Benutzer?
- 2. PM2-Protokollierung deaktivieren (.pm2/pm2.log NOT .pm2/logs)
- 3. So stellen Sie mit PM2 und Grunt
- 4. Node.JS Speicherverlust mit PM2
- 5. Wie pm2 Startbefehl auf dem Mac verwenden?
- 6. PM2 Produktionsoptimierung
- 7. Multer Dateien mit PM2 laden
- 8. nginx NodeJS + PM2 connot Rückkehr GET/PM2
- 9. parse-dashboard mit pm2 starten
- 10. Starten Sie die Anwendung mit PM2, wenn startet Formular schlucken
- 11. Verwenden Sie Django pre_fetch_related Funktion
- 12. Machen Sie PM2 Log auf Konsole
- 13. Wie man eine ExpressJS App mit PM2
- 14. Gibt es einen Unterschied zwischen PM2 log und PM2 Protokolle
- 15. Debug-Anwendung, die PM2
- 16. Sollte ich für immer/pm2 in einem (Docker) Container verwenden?
- 17. PM2 macht keine Cluster
- 18. PM2 läuft zusätzliche Prozesse
- 19. Docker & PM2: String basierend CMD mit Umgebungsvariablen
- 20. Wie die node.js Anwendung starten PM2 mit
- 21. node.js App-Bereitstellung mit PM2 ohne Ausfallzeiten
- 22. pm2, Knoten, Instanzen und Ports
- 23. Running Swagger Mock Server mit PM2
- 24. Wie man Segel in der Produktion mit PM2 (Segel Aufzug --Prod) mit PM2
- 25. Wie können wir Master-Prozess konfigurieren, wenn PM2 verwenden
- 26. Knoten JS pm2 maximale Speichergrenze
- 27. PM2 Neustart keystonejs app wiederholt
- 28. Node.js pm2 Multiprojektstart
- 29. Merging/Namespacing PM2 apps
- 30. Warum pm2 löschvorgang automatisch?
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
@davidism Ich dachte, es wäre das gleiche für die beiden, ich werde es bearbeiten. – ruttydm