Pyro - Uma introdução ao framework de RPC em Python
1. Pyro
Aluno: Diógenes A. Fernandes Hermínio
Tuesday, October 19, 2010
2. O que é?
PYthon Remote Objects
100% escrito em Python
Open Source (Licença MIT)
Modelo Cliente-Servidor
Conversa em arquiteturas 32-bit e 64-bit
Tuesday, October 19, 2010
3. NameServer
Banco de dados central
Usa um script para rodar (pyro-ns)
DIOGENES-HERMINIOS-MACBOOK:RENT_A_CAR DIOFEHER$ PYRO-NS
*** PYRO NAME SERVER ***
Tuesday, October 19, 2010
4. Server
Iniciar o servidor
Encontrar o NameServer
Instanciar o daemon
Setar um NameServer
Iniciar o main loop do daemon
Tuesday, October 19, 2010
5. Programa Server
CORE.INITSERVER()
DAEMON = CORE.DAEMON()
NS = NAMING.NAMESERVERLOCATOR().GETNS()
DAEMON.USENAMESERVER(NS)
DAEMON.REQUESTLOOP()
Tuesday, October 19, 2010
6. Instanciando um objeto
CLASS MANAGER(OBJECT):
... CODE ...
OBJ = CORE.OBJBASE()
OBJ.DELEGATETO(MANAGER())
DAEMON.CONNECT(OBJ, 'OBJ')
Tuesday, October 19, 2010
7. Instanciando um objeto
CLASS MANAGER(CORE.OBJBASE):
... CODE ...
OBJ = MANAGER()
DAEMON.CONNECT(OBJ, 'OBJ')
Tuesday, October 19, 2010
8. Cliente
Código de inicialização
Encontrar o URI = NameServer + nome do objeto
Usar o URI para chamar o objeto proxy
Tuesday, October 19, 2010
10. Protocolo de
comunicação
Transporte é feito com TCP/IP
Usa o Procolo PYRO, mas pode usar outros.
Baseado em pickle
Por isso só é possível passar objetos “pickeables”
Tuesday, October 19, 2010
11. Exceções
O cliente deve implementar tratamento de
exceções
Elas são lançadas como se objetos realmente
fossem locais
Podem ocorrer exceções que não fazem parte dos
objetos, como a rede ter caído
Tuesday, October 19, 2010
12. Logging
Pyro faz o log de todas as exceções que ocorrem
Timestamp + traceback
Desligado por default
Tuesday, October 19, 2010