Jump to content
Dr_Lion

Comunicação entre 2 scripts python

Recommended Posts

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á.

 

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.