Skip to content

Instantly share code, notes, and snippets.

@faelp22
Last active July 25, 2024 13:13
Show Gist options
  • Save faelp22/bc23c5980a4904b880f5c15f14cec01b to your computer and use it in GitHub Desktop.
Save faelp22/bc23c5980a4904b880f5c15f14cec01b to your computer and use it in GitHub Desktop.
import subprocess as terminal
import sys
import time
import requests
from requests.exceptions import ConnectionError as ErrorConecxao
from requests.exceptions import ReadTimeout
class FakeResponse:
status_code = 504
def pause():
try:
time.sleep(60 * 5) # espera 5 minutos
except KeyboardInterrupt:
print('\nSaindo Ctrl+C pressionado!')
sys.exit()
def check_server(response):
try:
if response.status_code != 200:
print('Reiniciando Servidor!')
terminal.call(['/usr/bin/ls', '/', '-lha'])
# 1 possivel forma
# terminal.call(['C:\Program Files\Apache Software\Tomcat 7.0\catalina.bat', 'stop'])
# terminal.call(['C:\Program Files\Apache Software\Tomcat 7.0\catalina.bat', 'start'])
# 2 possivel forma
# terminal.call(['C:\Program Files\Apache Software\Tomcat 7.0\shutdown.bat'])
# terminal.call(['C:\Program Files\Apache Software\Tomcat 7.0\startup.bat'])
return
print('Servidor Ok :)')
except Exception as error:
print('Erro ao executar o Comando, verifique o caminho/nome do mesmo ou se os argumentos estão certos')
print(error)
sys.exit()
def main():
url_servidor = 'http://127.0.0.1:5000/api/v1/usuario'
while True:
try:
resposta = requests.get(url_servidor, timeout=10) # timeout: espera 10 segundos
check_server(resposta)
pause()
except ReadTimeout:
print('Servidor não responde!')
check_server(FakeResponse())
pause()
except ErrorConecxao as error:
print('Servidor não está acessivel nesta URL ou PORTA, verifique a URL correta.')
print(error)
sys.exit()
except KeyboardInterrupt:
print('\nSaindo Ctrl+C pressionado!')
sys.exit()
if __name__ == '__main__':
main()
'''
Em programação você nunca vai saber de tudo, então um dos caminhos é vc saber "o quer vc quer", e
o "como" ai vai depender da linguagem.
Ex: Quero reiniciar o servidor java tomcat 7.
1 - preciso mandar uma requesisição HTTP para saber se o servidor está funcionando.
p: Como enviar requisição HTTP GET com python?
https://pythonhelp.wordpress.com/2013/03/12/acessando-recursos-na-web-com-python/
precisa instalar com pip: pip install -U requests
r: utilizando a biblioteca "requests" é uma das formas
primeiro instala a biblioteca pois a mesma não vem instalado no python
depois faz a import da mesma e chamando o modulo seguida do metodo que desejo passando a URL.
resposta = requests.get(URL)
2 - preciso esperar uma quantidade x de segundo caso o servidor não responda preciso reiniciar
p: Como setar timeout no "requests" python para esperar x segundos?
https://stackoverflow.com/questions/21965484/timeout-for-python-requests-get-entire-response
veja a primeira responsta marcada como certo, "para o problema da pessoa deu certo"
pricisa instalar com pip: pip install -U eventlet
r: o modulo "eventlet" pode ser usado, basta importar o mesmo e chamar o metodo Timeout passando o argumento
em segundos, mas tambem na lib "requests" tem o argumento de setar o tempo de espera:
requests.get(url, verify=False, timeout=10)
verify: é para ignorar caso o servido tenha SSL invalido
timeout: é tempo de de esperar em segundos
3 - preciso verificar se a resposta do servidor foi valida se não reinicio
p: como pegar o status code http do requestes?
python requests status code
https://realpython.com/python-requests/
r: quando requests reponde ele tras informações, basta pegar o resultado e colocar em uma variavel,
a mesma vai ter as informações retornadas, neste caso precisamos apenas saber se é diferente de 200.
https://pt.wikipedia.org/wiki/Lista_de_c%C3%B3digos_de_estado_HTTP
4 - Preciso agora executar comando no sistema operacional.
p: Como executar comandos em Shell/CMD com python
https://pt.stackoverflow.com/questions/29846/como-chamar-comando-externo-com-python
5 - preciso que esse comando python rode a cada 5m de forma infinita
p: como fazer o python esperar x segundos
https://pt.stackoverflow.com/questions/21409/temporizador-em-python
r: basta importa o modulo "time" depois chamar a função sleep passado os segundos
6 - Preciso reinicar o servidor tomcat 7
p: Como reiniciar servidor tomcat 7 no windows
https://crunchify.com/how-to-start-stop-apache-tomcat-server-via-command-line-setup-as-windows-service/
você precisa saber como é ai no seu servidor
'''
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment