Was ist der beste Weg, um Django auf Tornado Web Server asynchronen + django admin + django orm Möglichkeiten zu haben?

7

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?

    
Romans Ruskovs 04.01.2012, 20:45
quelle

2 Antworten

14

Nimm einfach diese Gleichung und löse sie.

  • Sie möchten nicht blockierendes IO-X haben.
  • Sie möchten django ORM - Y haben.
  • Sie möchten django admin - Z.
  • haben

Bewegen Sie sich jetzt Punkt für Punkt:

  • Für X - Tornado ist genug selbst.
  • Für Z - django reicht es aus. Ich denke nicht, du willst es haben Tausende von Administratoren, die Ihre Site gleichzeitig verwalten.
  • Für Y ist es schwieriger. Django ORM blockiert sich selbst.

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.

    
Nikolay Fominyh 30.07.2012, 13:27
quelle
5

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.

    
Cole Maclean 06.01.2012 15:57
quelle

Tags und Links