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.

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 menssagens dessa discussão
Comentários da comunidade

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

Receber menssagens dessa discussão

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

Receber menssagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2013 C4Media Inc.
Política de privacidade
BT