Запуск Twisted на веб-сайтах Azure

Могут ли веб-сайты 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, что нет возможности напрямую запустить что-то подобное выше.

--

Этот отрывок из обсуждения с Глифом (автором Twisted) на IRC-канале #twisted.web охватывает 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/ похоже, что вы можете разместить приложение Node на веб-сайтах Azure, которые используют HTTP напрямую. Подтверждения или исправления с благодарностью получены.


person user52440    schedule 20.02.2015    source источник


Ответы (3)



Да, оно может. На их главной странице говорится

Azure поддерживает любую операционную систему, язык, инструмент и платформу — от Windows до Linux, от SQL Server до Oracle, от C# до Java.

На странице, на которую вы ссылаетесь, показан базовый шаблон - это пример того, как настроить конкретное приложение WSGI. Вы не должны делать это таким образом.

Вы можете настроить виртуальную машину и поставить на нее все, что захотите.

person Gerrat    schedule 20.02.2015
comment
Я конкретно спрашиваю о веб-сайтах Azure, а не о виртуальных машинах Azure. Веб-сайты Azure специально не поддерживают какую-либо ОС, язык, инструмент и т. д. Из en.wikipedia.org/ wiki/Microsoft_Azure_Web_Sites#Implementation: веб-сайты Microsoft Azure реализованы как веб-сайты, динамически создаваемые по запросу на серверах под управлением Windows Server 2012 и IIS 8.0. - person user52440; 20.02.2015
comment
Да, я думаю, это правильно. Если вы хотите использовать Twisted в Azure, используйте виртуальную машину Azure (например, образ Linux или *BSD подойдет и будет работать нормально). - person oberstet; 21.02.2015

Если Twisted не требует установки каких-либо конкретных двоичных файлов (никаких ключей реестра, требований к жестко закодированному пути и т. д.), вы можете просто скопировать соответствующие двоичные файлы на свой веб-сайт и вместо этого использовать эти биты.

person Zain Rizvi    schedule 20.02.2015
comment
Спасибо, но я не уверен, что это поможет. Вопрос заключается в том, могут ли веб-сайты Azure размещать приложения Twisted, подобные вышеприведенным, которые напрямую говорят по http, не требуя ненужного создания приложения WSGI и не теряя всех преимуществ асинхронности; или требует ли веб-сайты Azure, чтобы каждый сайт Python был реализован в виде приложения WSGI, и к этому моменту вы упустили возможность обрабатывать что-либо на уровне http. Если я неправильно понял ваше предложение, не могли бы вы предоставить пример кода, демонстрирующий запуск приложения Twisted без необходимости создавать приложение WSGI? - person user52440; 21.02.2015