【发布时间】:2015-02-20 01:10:44
【问题描述】:
Azure 网站可以托管 Twisted 应用程序吗?例如类似:
from twisted.internet import reactor
from twisted.web import server
site = server.Site(myresource)
reactor.listenTCP(80, site)
reactor.run()
从http://azure.microsoft.com/en-us/documentation/articles/web-sites-python-configure/ 看来,似乎只支持 WSGI 应用程序,但只是想从 Azure 网站专家那里确认无法直接运行上述内容。
--
这段与 Glyph(Twisted 作者)在#twisted.web IRC 频道中讨论的摘录涵盖了这个问题的 Twisted 一半:
16:53:28 glyph: twisted has a WSGI _container_
16:53:34 glyph: twisted _is not_ a WSGI application
16:53:36 glyph: in any part
16:53:43 glyph: so you can't make twisted into a WSGI app
16:53:55 glyph: you can maybe invoke some Twisted code _from_ a WSGI app
16:54:05 glyph: but what that example is doing is speaking HTTP, and WSGI applications have to speak WSGI, they are not allowed to speak HTTP directly.
16:56:47 tos9: crochet?
16:56:56 glyph: tos9: crochet can't eat the inbound HTTP socket
16:56:58 glyph: tos9: so it doesn't help
16:57:11 glyph: you could write a thing that did the _outgoing_ traffic with Twisted, but since you can't handle the inbound request, you're bummed
16:57:37 glyph: basically Twisted's job is doing network I/O and if you're inside a WSGI stack, someone else is already doing the job of doing the network I/O
如果事实上没有办法直接运行这样的东西,似乎选择 Python 以外的语言可以为您在 Azure 网站上带来更多的灵活性。例如,从http://azure.microsoft.com/en-us/documentation/articles/web-sites-nodejs-develop-deploy-mac/ 看来,您可以在 Azure 网站上托管一个直接使用 HTTP 的 Node 应用程序。感谢您的确认或更正。
【问题讨论】:
标签: twisted azure-web-app-service twisted.web