Toto

Tela Software:
Toto
Detalhes de Software:
Versão: 0.12.0
Data de upload: 20 Feb 15
Revelador: JeremyOT
Licença: Livre
Popularidade: 5

Rating: 4.0/5 (Total Votes: 1)

Toto é uma estrutura pequena destina-se a acelerar o desenvolvimento do servidor API. Ele é construído em cima de Tornado e, atualmente, pode usar tanto MySQL ou MongoDB como um banco de dados de suporte.
Instalação
A maneira mais simples de instalar Toto é com pip. Basta executar pip instalar git -e + git: //github.com/JeremyOT/Toto.git#egg=Toto para instalar a última versão do módulo Toto em sua máquina.
Uso
Começando com Toto é fácil, tudo que você precisa fazer é fazer uma nova instância de toto.TotoServer e chamar run (). Toto precisa de um módulo de raiz a ser usado para o método de pesquisa. Por padrão, um TotoServer irá procurar um módulo chamado métodos. O parâmetro method_module pode ser usado para especificar um outro módulo pelo nome.
Configuração
Por padrão, Toto está configurado para ser executado na porta 8888 e se conectar a um servidor MongoDB rodando em localhost. A configuração pode ser realizada de três maneiras com cada substituindo o último:
1. Em opções passando como parâmetros nomeados para o construtor TotoServer.
2. Através de um arquivo de configuração, passando o caminho para o arquivo de configuração como o primeiro parâmetro para o construtor TotoServer.
3. Com os parâmetros de linha de comando (--option = 'valor string' --option = 1234)
Combinando os métodos de configuração pode ser útil quando a depuração. Execute o seu script com --help para ver uma lista completa de parâmetros disponíveis.
Métodos
Métodos são referenciados pelo nome em cada solicitação. a.b.c (ou a / b / c) mapeia para methods.a.b.c. Para adicionar novos métodos, adicionar módulos e pacotes para os métodos (ou especificado) pacote (veja o pacote conta para referência) e garantir que cada módulo pode ser chamado define invocar (manipulador, parâmetros) onde o alimentador é o TotoHandler (subclasse de tornado.web. RequestHandler) manipular a solicitação atual.
handler.connection.db fornece acesso direto ao banco de dados utilizado pela estrutura sessões e contas.
handler.session fornece acesso à sessão ou Nenhum atual se não autenticado. Propriedades disponíveis:
- Session.user_id - o ID do usuário atual
- Session.expires - o timestamp unix quando a sessão irá expirar
- Session.session_id - o ID da sessão atual
- Session.state - um dicionário python que contém o estado atual, você deve chamar session.save_state () para persistir quaisquer alterações
Para impor a autenticação por qualquer método, decorar a função invoke () com @ toto.invocation.authenticated. Tentativas não autorizadas para chamar métodos autenticados retornará um erro não autorizado.
Parâmetros necessários podem ser especificados por decorar uma função invoke () com @ toto.invocation.requires (param1, param2, ...).
Módulos do método podem tirar proveito dos recursos de não bloqueio do tornado por decorar uma função invoke () com @ toto.invocation.asynchronous. Quando a operação assíncrona está completa você deve chamar handler.finish (), a fim de finalizar o pedido. Os dados podem ser enviados para o cliente com handler.write () e handler.flush (). Opcionalmente, os módulos podem implementar on_connection_close () para limpar todos os recursos se o cliente fecha a conexão. Veja RequestHandler.on_connection_close () na documentação do Tornado para mais informações.
É importante lembrar que a Tornado requer que todas as chamadas para write (), flush () e acabamento () são executadas no thread principal. Você pode programar uma função a ser executada no thread principal com IOLoop.instance (). Add_callback (callback).
Nota: Os dados retornado de uma chamada para method.invoke () será enviado para o cliente como dados JSON e ser usado para gerar o cabeçalho-x-toto hmac para verificação. Isso pode causar problemas com métodos assíncronos. Se method.invoke () retorna Nenhum, uma resposta não será automaticamente enviado para o cliente e nenhum cabeçalho x-toto-hmac será gerado.
Pedidos
Métodos não-autenticadas:
1. serviço de chamadas com JSON objeto na forma: {"método": "abc", "parâmetros": }. Em vez de passar o argumento de "método" no corpo da solicitação, também é possível chamar métodos por URL. A URL equivalente à chamada acima é http://service.com/service/a/b/c.
2. analisar a resposta JSON.
Criação da conta:
Método account.create 1. Call with {"user_id": , "password": }.
2. Verifique se os base64 codificado HMAC-SHA1 do corpo de resposta com como a chave corresponde ao cabeçalho x-toto-hmac na resposta.
3. analisar a resposta JSON.
4. Leia e loja session_id do objeto de resposta.
Fazer Login:
Método account.login 1. Call with {"user_id": , "password": }.
2. Verifique se os base64 codificado HMAC-SHA1 do corpo de resposta com como a chave corresponde ao cabeçalho x-toto-hmac na resposta.
3. analisar a resposta JSON.
4. Leia e loja session_id do objeto de resposta.
Métodos autenticados:
1. Login (veja-acima).
2. serviço de chamadas com JSON objeto na forma: {"método": "abc", "parâmetros": } com o cabeçalho x-toto-session-id definido para o ID da sessão de voltar de login e o x- header toto-hmac definido para os base64 codificado HMAC-SHA1 gerado com como a chave ea seqüência de solicitação JSON como a mensagem.
3. Verifique se os base64 codificado HMAC-SHA1 do corpo de resposta com como a chave corresponde ao cabeçalho x-toto-hmac na resposta.
4. analisar a resposta JSON.
Nota: Estas instruções assumem que method.invoke () retorna um objeto a ser serializado e enviado para o cliente. Métodos que retornam Nada pode ser utilizado o envio de todos os dados e devem ser tratadas em conformidade.
Eventos
Às vezes você pode precisar para enviar eventos de um pedido para outro. Toto.events.EventManager de Toto facilita isso.
Para enviar uma EventManager.instance uso evento (). Enviar ('eventname', args). EventManager usa módulo cPickle de python para serialização de modo que você pode passar qualquer coisa cPickle pode manipular como args.
Para receber um evento, você deve registrar um manipulador com EventManager.instance (). Register_handler ('eventname', manipulador). manipulador é uma função que leva uma parâmetros e será chamado com os argumentos quando o EventManager envia um evento com 'eventname'. Eventos de Toto foram projetados principalmente para ser combinado com o apoio de tornado para os pedidos de não bloqueio. Veja o modelo de "chat" para um exemplo.
Sistema de eventos do Toto suporta o envio de eventos em várias instâncias, tanto na mesma máquina e em um sistema distribuído. Execute o seu servidor com --help para mais opções de configuração
daemonization
O servidor Toto pode ser executado como um daemon, passando o argumento --daemon = início. Para parar todos os processos em execução passar --daemon = stop. Isto irá parar todos os processos que compartilham o formato de arquivo pid especificado (toto.pid padrão). Os --processes = opção pode ser usado para especificar o número de instâncias de servidor para ser executado. Várias instâncias será executado em portas seqüenciais que começam na porta especificada por --port. Se 0 é usado como argumento para --processes, Toto vai correr um processo por cpu conforme detectado pelo módulo de multiprocessamento do Python. Opções adicionais daemonization pode ser visto de --help.
Clientes
Para ajudar você a começar, as bibliotecas de cliente JavaScript e iOS estão em desenvolvimento no https://github.com/JeremyOT/TotoClient-JS e https://github.com/JeremyOT/TotoClient-iOS respectivamente.

Características :

  • Usa JSON de fácil consumo pelos clientes em qualquer plataforma
  • É fácil adicionar novos métodos
  • A autenticação simples construído com verificação HMAC-SHA1 para solicitações autenticadas
  • persistência de estado de sessão para solicitações autenticadas
  • Sessões armazenados no banco de dados para simplificar escala entre os servidores

Requisitos :

  • Python

Comentário para Toto

Comentários não encontrado
Adicionar comentário
Ligue imagens!