Выбор подходящей службы Azure для развертывания повторяющейся задачи python

#python #azure #python-requests #azure-web-app-service #azure-webjobs

#python #лазурный #python-запросы #azure-web-app-service #azure-веб-задания

Вопрос:

В течение последних нескольких недель я пытался развернуть веб-скребок, написанный на python, в Azure. Сначала я попытался сделать это в службе приложений Azure, создав отправку образа docker в службу. Ранее я добивался успеха с помощью этого метода при развертывании rest api flask. К сожалению, ограничение времени ожидания службы приложений Azure означало, что контейнер web scraper завершается, поскольку он не дает надлежащего ответа, когда azure пытается получить ответ.

С тех пор я попытался настроить службу приложений на базе Windows, чтобы создать Azure WebJob, однако у этого есть проблема с ограничением на python 3.6, что, я считаю, вызывает проблемы с импортом. Я не могу импортировать модуль «запросы», который необходим для правильной работы скребка. У меня есть requirements.txt внутри zip-файла я загружаю webjob, но, похоже, это также не позволяет импортировать этот модуль. Есть ли способ импортировать модули изнутри webjob или есть другой / лучший способ развертывания повторяющейся задачи в Azure, которая не должна выдавать ответ API, как при обычном развертывании службы приложений Azure.

Ниже приведена ошибка, которую я получаю в журналах webjob :

 [12/19/2020 16:36:48 > 658fd3: SYS INFO] Run script 'run.py' with script host - 'PythonScriptHost'
[12/19/2020 16:36:48 > 658fd3: SYS INFO] Status changed to Running
[12/19/2020 16:36:48 > 658fd3: ERR ] Traceback (most recent call last):
[12/19/2020 16:36:48 > 658fd3: ERR ]   File "run.py", line 12, in <module>
[12/19/2020 16:36:48 > 658fd3: ERR ]     import requests
[12/19/2020 16:36:48 > 658fd3: ERR ] ModuleNotFoundError: No module named 'requests'
 

Любая помощь будет очень признательна, спасибо.

Ответ №1:

Вы можете использовать бессерверную функцию Azure, называемую Functions . Если вы хотите использовать ее более эффективно, создайте контейнер docker с любым изображением, которое вы хотите, и загрузите его в качестве своей функции, но остерегайтесь холодных запусков