Как я могу вызвать скрипт Python из службы приложений asp.net Azure? - PullRequest
0 голосов
/ 01 января 2019

У меня есть существующая служба приложений .NET Core / asp.net, размещенная в Azure.Мне нужно вызвать (по требованию) скрипт Python для возврата данных, основанных на пользовательском вводе.

Не похоже, что я могу использовать IronPython, так как мне нужны модули Python, которые встроены в CPython, к сожалению, это не так.не поддерживается IronPython.

Я вижу два варианта:

  • Возможно, я смогу установить нужную версию Python и библиотеки в службе приложения и вызвать ееиз кода .NET.Кажется, что это может быть устаревшим: https://docs.microsoft.com/en-us/visualstudio/python/publishing-python-web-applications-to-azure-from-visual-studio?view=vs-2017

  • Я могу создать совершенно новую и отдельную службу приложений только для скрипта Python и вызывать ее как API REST по требованию из службы приложений .NET,Это кажется излишним и создает проблему публичного открытия совершенно нового сервиса, чего я не хочу делать.По-видимому, это также имеет ограничение, заключающееся в том, что Flask не предназначен для производства, поэтому хостинг нескольких вызовов одновременно не очень эффективен.https://docs.microsoft.com/en-us/visualstudio/python/publish-to-app-service-windows?view=vs-2017

Каков наилучший способ вызова скрипта python по требованию из службы приложений .NET в Azure?

1 Ответ

0 голосов
/ 04 января 2019

По моему опыту, есть два способа вызова скрипта Python в C # без IronPython.

  1. Непосредственное использование System.Diagnostics.Process в C # для запуска команды, аналогичной потоку SO Запустите команды командной строки , чтобы получить результат путем анализа содержимого стандартного вывода процесса.Для этого можно использовать py2exe, чтобы обернуть скрипт Python в файл .exe, чтобы избежать установки модулей Python и установки переменных среды в службе приложений Azure.Однако, учитывая параллелизм, это не очень хорошая идея для производительности.

  2. Второй вариант, как вы сказали, заключается в развертывании сценария Python в качестве REST API в том же экземпляре Azure Web App,Вы можете следить за блогом Deploying multiple virtual directories to a single Azure Website, чтобы развернуть приложение фляги со своим скриптом Python в качестве дочернего проекта через Visual Studio с PTVS, чтобы отобразить URL-адрес API, например https://<your web app name>.azurewebsites.net/pyapi, которыйможно вызвать из вашего ASP.NET через HttpClient.Я попробовал это решение, оно работает.

Примечание. Из-за ограничения изолированной программной среды веб-приложения Azure для Local Address Requests необходимо использовать <your web app name>.azurewebsites.net в качествеимя хоста, ни localhost, ни 127.0.0.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...