Este projeto é uma solução para o desafio técnico proposto pela Simbiose, conforme anúncio publicado na lista o Python-Brasil, cuja especificação se encontra no arquivo especificacao.rst
localizado neste mesmo diretório.
André Felipe Dias <andre.dias@pronus.io>
- Python 3.4
- Acesso ao Cassandra via
localhost:9042
- Acesso ao Elasticsearch via
localhost:9200
Tip
Uma ótima alternativa é o uso de containers do Docker:
$ docker pull elasticsearch
$ docker run --name elasticsearch -p 9200:9200 -d elasticsearch
$ docker pull spotify/cassandra
$ docker run --name cassandra -p 9042:9042 -d spotify/cassandra
Os demais pré-requisitos do projeto devem ser instalados via pip
:
$ pip install -r requirements.txt
$ python app.py # daemon do sincronizador
$ python gerador_lero_lero.py # daemon do gerador de dados aleatórios
$ tail -f /var/log/syslog # para acompanhar o processamento
A configuração do intervalo de sincronização pode ser feita através do arquivo /tmp/config.txt
. Para que essa configuração seja carregada, é necessário enviar um sinal SIGUSR1
ao daemon do sincronizador. Exemplo:
$ echo 3 > /tmp/config.txt
$ pid=$(ps ax | grep 'python app.py' | head -n 1 | cut -f 1 -d ' ')
$ kill -s SIGUSR1 $pid
Algumas instalações adicionais são necessárias para os testes:
$ pip install nose sh
A execução dos testes automatizados:
$ nosetests
A listagem abaixo mostra um exemplo de depuração das principais partes do projeto:
>>> from app import Sincronizador
>>> s = Sincronizador()
>>> from gerador_lero_lero import generate
>>> generate()
>>> generate()
>>> generate()
>>> s.run()
>>> generate()
>>> generate()
>>> s.run()
>>>
Acompanhe a saída do processamento através do comando:
$ tail -f /var/log/syslog