[Grok-dev] Re: Exemplo de uso de interfaces fora do Zope

Luciano Ramalho luciano at ramalho.org
Tue Aug 7 01:15:15 EDT 2007


Sorry for the Portuguese post, folks. I thought I was sending this to
another list.

--
Luciano


On 8/7/07, Luciano Ramalho <luciano at ramalho.org> wrote:
> Hoje eu terminei de implementar um protótipo do kirbifetch, o buscador
> de metadados de livros.
>
> O código está aqui:
>
> http://svn.zope.org/Sandbox/luciano/kirbi/kirbifetch/src/kirbifetch/
>
> Vejam bem: ainda é um protótipo. Funciona mas está cheio de arames e
> silver tape.
>
> Os módulos que interessam são apenas dois:
>
>
> fetch.py
>
>     Este é o daemon que usa o Twisted para perguntar ao Kirbi que
> livros devem ser buscados, e depois buscá-lo na(s) fonte(s) de
> metadados, juntamente com as figuras das capas, se existirem
>
> amazonsource.py
>
>     Este módulo define uma classe que implementa a interface
> IMetadataSource, que define métodos para construir URLs de busca e um
> método para fazer parse de resultados.
>
> Atualmente a interface IMetadataSource serve apenas como documentação
> (me ajudou a pensar na separação de responsabilidades entre fetch e
> amazonsource), e não tem nenhuma função no kirbifetch.
>
> Porém a idéia é que existam várias fontes de dados, e aí seria bacana
> se o fetch.py usasse o mecanismo de interfaces para poder enfileirar
> vários provedores de IMetadataSource para acioná-los sucessivamente ou
> alternativamente. Por exemplo, teríamos várias cadeias de Sources, que
> seriam selecionadas conforme o prefixo do ISBN:
>
> - 0|1 (mercado anglófonos): AmazonSource -> AlibrisSource ->
> LibraryOfCongressSource -> BritishLibrarySource
>
> - 85 (mercado brasileiro): TempoRealSource -> SubmarinoSource ->
> UnibibliWebSource -> BibliotecaNacionalSource
>
> Esta é a idéia em linhas gerais. É uma arquitetura sofisticada e por
> hora além das minhas capacidades de implementação. Estou colocando
> estas idéias aqui para a gente ir conversando...
>
> O interessante deste caso de uso de interfaces é que ele não tem nada
> a ver com o Zope. O kirbifetch foi feito para dialogar com qualquer
> servidor XML-RPC que implemente dois métodos: dumpIncomplete (devolve
> uma lista de ISBNs a serem buscados) e updateBooks (recebe uma lista
> de dicionários com dados bibliográficos). No diretório testes existe
> um dummy_server.py que implementa isso em poucas linhas.
>
> [ ]s
> Luciano
>
> PS. Outro desafio para este kirbifetch é escrever testes... testes de
> operações assíncronas... mais um tema para estudar.
>


More information about the Grok-dev mailing list