BT

Python possui um Wrapper para o Windows Azure

por Abel Avram , traduzido por Felipe Rodrigues em 14 Nov 2008 |

Sriram Krishnan, um Program Manager na Microsoft, escreveu um wrapper Phyton para o Windows Azure Data Storage. Python é uma das linguagens suportadas pelo Windows Azure.

De acordo com web site do Microsoft Azure, Python é uma das ferramentas e linguagens a serem suportadas pelo Windows Azure:

Windows Azure é uma plataforma aberta que suportará linguagens e ambientes Microsoft e não-Microsoft. Windows Azure é aberto a ferramentas e linguagens de terceiros, como Eclipse, Ruby, PHP e Python. ...

Milhões de desenvolvedores ao redor do mundo já usam o .NET Framework e o ambiente de desenvolvimento Visual Studio. Utilize estas mesmas habilidades para desenvolver aplicações cloud-enabled que podem ser escritas, testadas e instaladas direto do Visual Studio. Num futuro próximo, os desenvolvedores serão capazes de realizar deploy de aplicações Ruby on Rails e Python também.

Sriram escreveu um data storage wrapper em Python para o Windows Azure e publicou o código no GitHub. Armazenar/Retornar dados é feito como no seguinte exemplo:

conn = WAStorageConnection(DEVSTORE_HOST, DEVSTORE_ACCOUNT, DEVSTORE_SECRET_KEY)
    for (container_name,etag, last_modified ) in  conn.list_containers():
        print container_name
        print etag
        print last_modified
    conn.create_container("testcontainer", False)
    conn.put_blob("testcontainer","test","Hello World!" )
    print conn.get_blob("testcontainer", "test")

Signing-in é feito como no seguinte exemplo:

def _get_auth_header(self, http_method, path, data, headers):
   # As documented at http://msdn.microsoft.com/en-us/library/dd179428.aspx
   string_to_sign =""

#First element is the method
   string_to_sign += http_method + NEW_LINE

   #Second is the optional content MD5
   string_to_sign += NEW_LINE

   #content type - this should have been initialized atleast to a blank value
   if headers.has_key("content-type"):
    string_to_sign += headers["content-type"]
   string_to_sign += NEW_LINE

   # date - we don't need to add header here since the special date storage header
   # always exists in our implementation
   string_to_sign += NEW_LINE

   # Construct canonicalized storage headers.
   # TODO: Note that this doesn't implement parts of the spec -
   # combining header fields with same name,
   # unfolding long lines and trimming white spaces around the colon
   ms_headers =[header_key for header_key in headers.keys()
   if header_key.startswith(PREFIX_STORAGE_HEADER)]
   ms_headers.sort()
   for header_key in ms_headers:
    string_to_sign += "%s:%s%s" % (header_key, headers[header_key], NEW_LINE)

   # Add canonicalized resource
   string_to_sign += "/" + self.account_name + path
   utf8_string_to_sign = unicode(string_to_sign).encode("utf-8")
   hmac_digest = hmac.new(self.secret_key,
    utf8_string_to_sign,
    hashlib.sha256).digest()
   return base64.encodestring(hmac_digest).strip()

Parece que os planos da Microsoft para o Windows Azure supera a oferta do Google. Atualmente, o Google App Engine suporta apenas Phyton, mas há planos para suportar mais linguagens no futuro, de acordo com o Google.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.