Biblioteca de cliente partilhada do Azure Core para Python – versão 1.29.6
O Azure Core fornece exceções e módulos partilhados para bibliotecas de cliente do SDK Python. Estas bibliotecas seguem as Diretrizes de Estrutura do SDK do Azure para Python .
Se for um programador de bibliotecas de cliente, consulte a referência do programador da biblioteca de cliente para obter mais informações.
Código fonte | Pacote (Pypi) | Pacote (Conda) | Documentação de referência da API
Exclusão de Responsabilidade
O suporte de pacotes Python do SDK do Azure para Python 2.7 terminou a 01 de janeiro de 2022. Para obter mais informações e perguntas, consulte https://github.com/Azure/azure-sdk-for-python/issues/20691
Introdução
Normalmente, não terá de instalar o azure core; será instalado quando instalar uma das bibliotecas de cliente que a utiliza. Caso pretenda instalá-la explicitamente (para implementar a sua própria biblioteca de cliente, por exemplo), pode encontrá-la aqui.
Conceitos-chave
Exceções da Biblioteca principal do Azure
AzureError
O AzureError é a exceção base para todos os erros.
class AzureError(Exception):
def __init__(self, message, *args, **kwargs):
self.inner_exception = kwargs.get("error")
self.exc_type, self.exc_value, self.exc_traceback = sys.exc_info()
self.exc_type = self.exc_type.__name__ if self.exc_type else type(self.inner_exception)
self.exc_msg = "{}, {}: {}".format(message, self.exc_type, self.exc_value) # type: ignore
self.message = str(message)
self.continuation_token = kwargs.get("continuation_token")
super(AzureError, self).__init__(self.message, *args)
a mensagem é qualquer mensagem (str) a ser associada à exceção.
args são quaisquer args adicionais a serem incluídos com exceção.
os kwargs são argumentos de palavra-chave a incluir com a exceção. Utilize o erro de palavra-chave para transmitir uma exceção interna e continuation_token para uma referência de token para continuar uma operação incompleta.
As seguintes exceções herdam do AzureError:
ServiceRequestError
Ocorreu um erro ao tentar fazer um pedido ao serviço. Não foi enviado nenhum pedido.
ServiceResponseError
O pedido foi enviado, mas o cliente não conseguiu compreender a resposta. A ligação pode ter excedido o tempo limite. Estes erros podem ser repetidos para operações idempotentes ou seguras.
HttpResponseError
Foi feito um pedido e foi recebido um código de estado sem êxito do serviço.
class HttpResponseError(AzureError):
def __init__(self, message=None, response=None, **kwargs):
self.reason = None
self.response = response
if response:
self.reason = response.reason
self.status_code = response.status_code
self.error = self._parse_odata_body(ODataV4Format, response) # type: Optional[ODataV4Format]
if self.error:
message = str(self.error)
else:
message = message or "Operation returned an invalid status '{}'".format(
self.reason
)
super(HttpResponseError, self).__init__(message=message, **kwargs)
mensagem é a mensagem de erro de resposta HTTP (opcional)
a resposta é a resposta HTTP (opcional).
os kwargs são argumentos de palavra-chave a incluir com a exceção.
As seguintes exceções herdam de HttpResponseError:
DecodeError
Um erro gerado durante a des serialização da resposta.
IncompleteReadError
Foi gerado um erro se o elemento da rede fechar a ligação antes de recebermos o corpo completo da mensagem.
ResourceExistsError
Uma resposta de erro com o código de estado 4xx. Isto não será gerado diretamente pelo pipeline principal do Azure.
ResourceNotFoundError
Uma resposta de erro, normalmente acionada por uma resposta 412 (para atualização) ou 404 (para obter/publicar).
ResourceModifiedError
Uma resposta de erro com o código de estado 4xx, normalmente 412 Conflito. Isto não será gerado diretamente pelo pipeline principal do Azure.
ResourceNotModifiedError
Uma resposta de erro com o código de estado 304. Isto não será gerado diretamente pelo pipeline principal do Azure.
ClientAuthenticationError
Uma resposta de erro com o código de estado 4xx. Isto não será gerado diretamente pelo pipeline principal do Azure.
TooManyRedirectsError
Ocorreu um erro quando é atingido o número máximo de tentativas de redirecionamento. A quantidade máxima de redirecionamentos pode ser configurada no RedirectPolicy.
class TooManyRedirectsError(HttpResponseError):
def __init__(self, history, *args, **kwargs):
self.history = history
message = "Reached maximum redirect attempts."
super(TooManyRedirectsError, self).__init__(message, *args, **kwargs)
o histórico é utilizado para documentar os pedidos/respostas que resultaram em pedidos redirecionados.
args são quaisquer args adicionais a serem incluídos com exceção.
os kwargs são argumentos de palavra-chave a incluir com a exceção.
StreamConsumedError
Foi emitido um erro se tentar aceder ao fluxo de ou azure.core.rest.AsyncHttpResponse
depois de o fluxo de azure.core.rest.HttpResponse
resposta ter sido consumido.
StreamClosedError
Foi emitido um erro se tentar aceder ao fluxo do ou azure.core.rest.AsyncHttpResponse
após o fluxo de azure.core.rest.HttpResponse
resposta ter sido fechado.
ResponseNotReadError
Foi emitido um erro se tentar aceder primeiro aos content
bytes de ou azure.core.rest.AsyncHttpResponse
antes de azure.core.rest.HttpResponse
ler nos bytes da resposta.
Configurações
Ao chamar os métodos, algumas propriedades podem ser configuradas ao transmitir como argumentos kwargs.
Parâmetros | Description |
---|---|
cabeçalhos | Os cabeçalhos do Pedido HTTP. |
request_id | O ID do pedido a adicionar ao cabeçalho. |
user_agent | Se for especificado, este procedimento será adicionado à frente da cadeia de agente do utilizador. |
logging_enable | Utilize para ativar por operação. Predefinições para False . |
logger | Se especificado, será utilizado para registar informações. |
response_encoding | A codificação a utilizar se for conhecida por este serviço (irá desativar a deteção automática). |
Proxies | Mapeia o protocolo ou o protocolo e o nome do anfitrião para o URL do proxy. |
raw_request_hook | Função de chamada de retorno. Será invocado a pedido. |
raw_response_hook | Função de chamada de retorno. Será invocado na resposta. |
network_span_namer | Um callable para personalizar o nome do span. |
tracing_attributes | Atributos a definir em todos os intervalos criados. |
permit_redirects | Se o cliente permite redirecionamentos. Predefinições para True . |
redirect_max | Os redirecionamentos máximos permitidos. Predefinições para 30 . |
retry_total | Número total de tentativas a permitir. Tem precedência sobre outras contagens. O valor predefinido é 10 . |
retry_connect | Quantos erros relacionados com a ligação deve repetir. Estes são erros gerados antes de o pedido ser enviado para o servidor remoto, que assumimos não ter acionado o servidor para processar o pedido. O valor predefinido é 3 . |
retry_read | Quantas vezes repetir erros de leitura. Estes erros são gerados após o pedido ter sido enviado para o servidor, pelo que o pedido pode ter efeitos colaterais. O valor predefinido é 3 . |
retry_status | Quantas vezes repetir em códigos de estado incorretos. O valor predefinido é 3 . |
retry_backoff_factor | Um fator de recuo a aplicar entre tentativas após a segunda tentativa (a maioria dos erros é resolvida imediatamente por uma segunda tentativa sem demora). A política de repetição irá suspender durante: {backoff factor} * (2 ** ({number of total retries} - 1)) segundos. Se o backoff_factor for 0,1, a repetição irá suspender para [0,0s, 0,2s, 0,4s, ...] entre repetições. O valor predefinido é 0.8 . |
retry_backoff_max | O tempo máximo de folga. O valor predefinido é 120 segundos (2 minutos). |
retry_mode | Atraso fixo ou exponencial entre tentativas, a predefinição é Exponential . |
tempo limite | Definição de tempo limite para a operação em segundos, a predefinição é 604800 s (7 dias). |
connection_timeout | Um único flutuante em segundos para o tempo limite da ligação. A predefinição é 300 segundos. |
read_timeout | Um único flutuante em segundos para o tempo limite de leitura. A predefinição é 300 segundos. |
connection_verify | Verificação do certificado SSL. Ativado por predefinição. Definido como Falso para desativar, em alternativa, pode ser definido como o caminho para um ficheiro ou diretório CA_BUNDLE com certificados de ACs fidedignas. |
connection_cert | Certificados do lado do cliente. Pode especificar um certificado local para utilizar como certificado do lado do cliente, como um único ficheiro (que contém a chave privada e o certificado) ou como uma cadeia de identificação dos caminhos de ambos os ficheiros. |
Proxies | Protocolo ou protocolo de mapeamento de dicionários e nome do anfitrião para o URL do proxy. |
cookies | Dict or CookieJar object to send with the Request . |
connection_data_block_size | O tamanho do bloco dos dados enviados através da ligação. A predefinição é 4096 bytes. |
Transporte assíncrono
O transporte assíncrono foi concebido para ser opt-in. O AioHttp é uma das implementações suportadas do transporte assíncrono. Não está instalado por predefinição. Tem de instalá-lo separadamente.
Módulos partilhados
MatchConditions
MatchConditions é uma enumeração para descrever as condições de correspondência.
class MatchConditions(Enum):
Unconditionally = 1 # Matches any condition
IfNotModified = 2 # If the target object is not modified. Usually it maps to etag=<specific etag>
IfModified = 3 # Only if the target object is modified. Usually it maps to etag!=<specific etag>
IfPresent = 4 # If the target object exists. Usually it maps to etag='*'
IfMissing = 5 # If the target object does not exist. Usually it maps to etag!='*'
CaseInsensitiveEnumMeta
Uma metaclasse para suportar enumerações não sensíveis a maiúsculas e minúsculas.
from enum import Enum
from azure.core import CaseInsensitiveEnumMeta
class MyCustomEnum(str, Enum, metaclass=CaseInsensitiveEnumMeta):
FOO = 'foo'
BAR = 'bar'
Valor nulo do Sentinel
Um objeto falsy sentinel que é suposto ser utilizado para especificar atributos sem dados. Esta opção é serializada para null
na transmissão.
from azure.core.serialization import NULL
assert bool(NULL) is False
foo = Foo(
attr=NULL
)
Contribuir
Agradecemos todas as contribuições e sugestões para este projeto. A maioria das contribuições requerem que celebre um Contrato de Licença de Contribuição (CLA) no qual se declare que tem o direito de conceder e que, na verdade, concede-nos os direitos para utilizar a sua contribuição. Para mais detalhes, visite https://cla.microsoft.com.
Quando submete um pedido Pull, um bot do CLA determina automaticamente se tem de fornecer um CLA e decorar o PR de forma adequada (por exemplo, etiqueta, comentário). Só tem de seguir as instruções fornecidas pelo bot. Apenas terá de fazer isto uma vez em todos os repositórios com o nosso CLA.
Este projeto adotou o Microsoft Open Source Code of Conduct (Código de Conduta do Microsoft Open Source). Para obter mais informações, veja a Code of Conduct FAQ (FAQ do Código de Conduta) ou envie um e-mail para opencode@microsoft.com com quaisquer perguntas ou comentários adicionais.
Azure SDK for Python
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários