Frage

Für eine recht lange Zeit habe ich will ein Haustier Projekt starten, die in zielen darauf ab Zeit sich zu einem Web-Hosting Control Panel, aber in erster Linie konzentriert sich auf Python-Hosting - was bedeutet, ich möchte eine Art und Weise machen, für die Nutzer Django zu generieren / Start / andere Frameworks Projekte direkt von der Platte. Ich schien zu haben CherryPy: das perfekte Werkzeug meine app mit ihm bauen gefunden.

Das würde mir erlauben es so, wie ich tun möchte, die App mit einem eigenen HTTP-Aufbau / HTTPS-Server und auch alle meine Lieblings-Programmiersprache.

Aber jetzt eine neue Frage stellt sich: Wie CherryPy ein Gewinde-Server ist, wird es das Recht für diese Art von Aufgabe?

Es wird viel Zeit raubenden Aufgaben also, wenn eine der Aufgaben blockieren, wird der Rest des Benutzers versuchen, andere Seiten zugreifen gelassen werden, warten und erhalten timed out schließlich.

Ich stelle mir vor, dass diese Art von Problem nicht auf einer Gabel basierten Server passieren würde.

Was würden Sie raten?

War es hilfreich?

Lösung

„Gewinde“ und „Fork basierte“ Server sind gleichwertig. A „threaded“ Server hat mehrere Ausführungsthreads, und wenn man Blöcke dann werden die anderen weiter. Ein „Fork basierte“ Server hat mehrere Prozesse ausgeführt wird, und wenn man Blöcke dann werden die anderen weiter. Der einzige Unterschied besteht darin, dass Gewinde Server standardmäßig Speicher zwischen den Threads zu teilen, „fork Basis“ Einsen standardmäßig nicht einem gemeinsamen Speicher zu.

Ein weiterer Punkt - die „Subprozess“ Modul ist nicht Thread-sicher, so dass, wenn Sie versuchen, es aus CherryPy zu verwenden, werden Sie wierd Fehler erhalten. (Dies ist Python Bug 1.731.717 )

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top