Ich hätte gerne ein Django-Admin-Panel mit Tornado-Backends, das Anfragen aus Online-Spielen bearbeiten wird. Ich weiß im Moment nicht, ist es eine gute Idee, django App auf die nächste Art zu laden:
%Vor%HelloHandler wird ein Back-End-Parser sein.
Verliere ich etwas Leistung in der Kombination von wsgi + ioloop?
Wenn es eine schlechte Lösung ist, ist es möglich, 2 Apps laufen zu lassen: django admin und tornado web. Können Sie mir antworten, wie kann ich Django ORM mit Tornado App benutzen?
Nimm einfach diese Gleichung und löse sie.
Bewegen Sie sich jetzt Punkt für Punkt:
Der beste Weg hier - nicht Django ORM mit Tornado zu verwenden.
Zweiter Weg - Sie können tiefer tauchen und es direkt in Tornado integrieren, wenn Sie sicher sind, dass es die ganze Anwendung nicht blockieren wird. Nehmen Sie die Lösung von diese Antwort.
Dritte Möglichkeit - Sie können Ihre Django-Anwendung in einen Dienst konvertieren, der mit ORM schwer arbeitet, und Sie können auf diesen Dienst mit AsyncHTTPCLient
von tornado zugreifen.
Vierter Weg - Integrieren Sie den Tornado-Webserver in Ihre Django-Anwendung. Tatsächlich wird es Ihnen einen kleinen Leistungsschub geben.
Fünfte Möglichkeit - verwenden Sie zwei Tornado-Webserver. Klingt verrückt, ja. Verwenden Sie einen mit Django ORM integriert und zweitens mit AsyncHTTPClient
.
Ich glaube, dass du das Beste aus zwei Welten nehmen kannst.
Django ist nicht asynchron. Wenn Sie also Django in Tornado ausführen, werden die meisten Leistungsvorteile, die Sie von Tornado erhalten, beseitigt.
Wenn Sie maximale asynchrone Leistung wünschen, sollten Sie Tornado mit einer nicht blockierenden Datenbank verwenden (ich gehe davon aus, dass Sie den Django-Administrator für die Verwendung mit einer SQL-Datenbank benötigen).
Wenn Sie eine möglichst einfache Entwicklung wünschen, verwenden Sie Django mit seinem ORM-System und seinen Admin-Tools.
Sie können leider nicht einfach das Beste aus beiden Welten mischen.
Also, ja, Sie werden die Leistung verlieren. In dieser Situation würde ich wahrscheinlich Tornado benutzen und auf Django admin verzichten. Wenn Sie sich für eine Kompromittierung entschieden haben, könnten Sie zwei Apps schreiben, die eine Datenbank freigeben, aber das bedeutet, dass Sie zwei Datenzugriffsebenen verwalten müssen.
Tags und Links django orm tornado django-wsgi