Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #58 da revista programar. Faz já o download aqui!

Dr_Lion

Comunicação entre 2 scripts python

Mensagens Recomendadas

Dr_Lion    5
Dr_Lion

Ora bem, a ideia é desenvolver 2 scripts em python, nomeadamente S1 e S2. Os scripts devem correr em windows recentes 8/10.. E vão estar a correr na mesma máquina.

Optei pelo python 2.7 visto ser o que estou mais acostumado, não tem que ser estritamente em 2.7 pelo que se simplificar posso mudar, mas gostava de manter assim ..

 

O S1 apenas deve enviar valores para o S2 periodicamente sem esperar/receber nenhuma resposta.

O S2 mediante os valores que vai recebendo vai efetuando as tarefas programadas, o S2 deve apenas receber o valor enviado por S1 mas não deve responder ao S1.

 

A minha questão é que formas de comunicação tenho Intra-Máquina, eficientes, que consumam poucos recursos e relativamente fáceis de programar?

Fiz uma pesquisa ao de leve e encontrei várias possibilidades:

-pexpect

-sockets

-pipes

-FIFO

-subprocess/Popen

-threads/queues

 

Qual aconselhariam a usar para o que pretendo? Ou se tiverem alguma solução melhor que não me esteja a ocorrer, agradeço a ajuda desde já.

 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gamemaster    1
Gamemaster

Olá

E que tal usar o redis?

O S1 liga-se ao servidor redis e envia a mensagem pretendida. O S2, com uma ligação keep-alive, lê a key-value do S1 pelo redis e assim poderás identificar a tarefa.

Cumprimentos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Dr_Lion    5
Dr_Lion

Boas,

Não conhecia essa solução, mas isso implica instalar esse software/middleware certo? È que estava à procura de uma solução straight forward e de forma a que as coisas ficassem mais leves...

Além dessa solução o que aconselham mais? Que outras sugestões existem?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gamemaster    1
Gamemaster
19 minutos atrás, Dr_Lion disse:

Boas,

Não conhecia essa solução, mas isso implica instalar esse software/middleware certo? È que estava à procura de uma solução straight forward e de forma a que as coisas ficassem mais leves...

Além dessa solução o que aconselham mais? Que outras sugestões existem?

Hey!

Bem, sim, requeria instalar as aplicações mas mais simplicidade do que isso não vais encontrar.

Provavelmente irás ter algum cronjob ou task scheduler não? 

Dá uma vista de olhos no Docker. Com o Docker, podes inicializar aplicações em segundo. MySql, NGINX, Redis, o que tu quiseres! E é bastante fácil de manusear.

Mas se insistires em ligação direta, então vai pelo sockets TCP

Abraços

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
M6    87
M6

Dependendo do que necessitas, podes usar pipes/sockets/ficheiros, etc..

Tens mesmo muitas hipóteses.

Uma opção que podes considerar é uma chamada via socket/http/webservices que te dá sempre a vantagem de poderes colocar as coisas inter-máquina. Um serviço simples de chamadas http permitem-te comunicar sem grandes dramas, por exemplo.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Dr_Lion    5
Dr_Lion

Se fosse linux iria para pipes ou sockets, se bem que como é windows não sei se valerá a pena enveredar pelos pipes, ou se meto mesmo sockets, e deixo já em aberto a possibilidade de introduzir outro sistema caso venha a ser necessário mais tarde, em vez de ficar tudo limitado ao mesmo sistema.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade