Ich bin auf diese Frage gestoßen und ich war ein wenig enttäuscht, niemand hatte darauf hingewiesen, wie Kolben (und die meisten Python-Web-Anwendungen sind gemeint zu implementieren). Siehe: http://flask.pocoo.org/docs/deploying/#deployment
Meine bevorzugte Implementierungsoption ist die super-einfache Tornado, die auf Linux gleichermaßen gut funktioniert und von Windows (wenn ich die Bereitstellung es neben den bestehenden Websites oder sogar eine Hybridbereitstellung im Rahmen einer bestehenden Website, ich Normalerweise verwende ich IIS Application Request Routing [ARR] als Reverse Proxy für Tornado). Ich habe auch gevent auf beiden mit großem Erfolg verwendet.
Tornado ist eine Open-Source-Version des skalierbaren, blockierungsfreien Webservers und Tools, die FriendFeed unterstützen. Da es nicht blockierend ist und epoll verwendet, kann es tausende gleichzeitig bestehender Verbindungen verarbeiten, was bedeutet, dass es ideal für Echtzeit-Webdienste ist. Die Integration dieser Service mit Flask ist einfach:
Also, wenn Ihr Kolben Anwendung in yourapplication.py ist, könnte man eine andere namens tornado_web.py zu erstellen und verwenden, um Ihre Anwendung zu dienen, wie so:
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from yourapplication import app
http_server = HTTPServer(WSGIContainer(app))
http_server.listen(5000)
IOLoop.instance().start()
über: http://flask.pocoo.org/docs/deploying/wsgi-standalone/#tornado
In welcher Weise setzen Sie Flask um? Es wäre nicht so sehr auf Flask selbst. –
Denken Sie daran, dass Multithreading in Python sehr gut für das geeignet ist, was Sie versuchen. Die "verzögerten" Teile Ihrer Ansicht können beispielsweise Web-Service- oder Datenbankaufrufe oder ein falsch konfigurierter Webserver sein, der für jede Anforderung einen Python-Prozess erstellt. Was auch immer das eigentliche Problem ist, wir wissen nicht, was es ist, Ihnen zu helfen, es mit den Details zu lösen, die Sie gegeben haben. Wenn Sie nach einer Alternative zu Flask fragen, fragen Sie im Grunde nach Empfehlungen für ein Tool, für die StackOverflow aufgrund der vielen möglichen Antworten keine Frage ist. –
Wie Sie erwähnt haben, erstelle ich pro Anfrage einen Prozess. Aber ich kann es nicht vermeiden, weil der Webservice ein Text-zu-Sprache-System (TTS) freilegt, das als separate Binärdatei implementiert ist. Um mit dem TTS-Prozess zu interagieren, verwende ich das Pexpect-Modul. So erzeugt ein existierender freier Thread aus dem Thread-Pool pro Anfrage einen TTS-Prozess mit pexpect. Ich weiß, dass Design etwas seltsam ist. Hier ist der Link zur aktuellen Implementierung http://sitspeech.iitkgp.ac.in/. Ich schätze jeden Vorschlag zur Verbesserung des aktuellen Designs. – user2586432