Я пытаюсь опубликовать модель машинного обучения на веб-сервисе Azure с использованием python. Я могу развернуть код успешно, но когда я пытаюсь вызвать его по URL-адресу, он бросает мне модуль «Azure», которого нет. Код в основном извлекает модель TFIDF из контейнера (blob) и использует его для прогнозирования нового значения. Ошибка ясно говорит, что пакет Azure отсутствует при попытке запустить в webservice, и я не уверен, как его исправить. Здесь идет код:Azure module on webservice
Для развертывания:
from azureml import services
from azure.storage.blob import BlobService
@services.publish('7c94eb2d9e4c01cbe7ce1063','f78QWNcOXHt9J+Qt1GMzgdEt+m3NXby9JL`npT7XX8ZAGdRZIX/NZ4lL2CkRkGQ==')
@services.types(res=unicode)
@services.returns(str)
def TechBot(res):
from azure.storage.blob import BlobService
from gensim.similarities import SparseMatrixSimilarity, MatrixSimilarity, Similarity
blob_service = BlobService(account_name='tfidf', account_key='RU4R/NIVPsPOoR0bgiJMtosHJMbK1+AVHG0sJCHT6jIdKPRz3cIMYTsrQ5BBD5SELKHUXgBHNmvsIlhEdqUCzw==')
blob_service.get_blob_to_path('techbot',"2014.csv","df")
df=pd.read_csv("df")
doct = res
Чтобы получить доступ к URL я использовал код питона из
service.azureml.net
import urllib2
import json
import requests
data = {
"Inputs": {
"input1":
[
{
'res': "wifi wnable",
}
],
},
"GlobalParameters": {
}
}
body = str.encode(json.dumps(data))
#proxies = {"http":"http://%s" % proxy}
url = 'http://ussouthcentral.services.azureml.net/workspaces/7c94eb2de26a45399e4c01cbe7ce1063/services/11943e537e0741beb466cd91f738d073/execute?api-version=2.0&format=swagger'
api_key = '8fH9kp67pEt3C6XK9sXDLbyYl5cBNEwYg9VY92xvkxNd+cd2w46sF1ckC3jqrL/m8joV7o3rsTRUydkzRGDYig==' # Replace this with the API key for the web service
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)}
#proxy_support = urllib2.ProxyHandler(proxies)
#opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler(debuglevel=1))
#urllib2.install_opener(opener)
req = urllib2.Request(url, body, headers)
try:
response = urllib2.urlopen(req, timeout=60)
result = response.read()
print(result)
except urllib2.HTTPError, error:
print("The request failed with status code: " + str(error.code))
# Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure
print(error.info())
print(json.loads(error.read()))
строка «Рез» будет предсказано в конце , Как я уже сказал, он работает отлично, если я запускаю, как в python, вызвав azure module, проблема возникает, когда я обращаюсь к url. Любая помощь приветствуется, пожалуйста, дайте мне знать, если вам нужна дополнительная информация (я только обработал половину моего кода)
Я обновил протокол blobservice и используется HTTP в URL, теперь И получать «URLError:
Обновлен сценарий, чтобы отразить переменную Http и timeout –
@SincoleBrans You неправильно понял мое значение. Я предложил вам попробовать получить доступ к хранилищу Azure Blob в SDK с использованием протокола HTTP, а не использовать 'http: //' вместо 'https: //' в URL-адресе веб-сервиса azureml. Посмотрите мой код обновления для развертывания azureml. –