IIC2233 / Syllabus-2023-1

79 stars 44 forks source link

Como capturar el cierre de servidor con ctrl + c #493

Open plourido opened 1 year ago

plourido commented 1 year ago

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

Duda

Hola, buenas noches, espero que se encuentren bien. Estoy un poco perdido en como capturar el error al momento de cerrar el servidor con ctrl + c. He buscado pero no he encontrado nada. Me podrían ayudar por favor Muchas gracias

iespinazac commented 1 year ago

Hola! Te recomiendo investigar la excepción KeyboardInterrupt, podría servirte para lo que intentas implementar 👀

plourido commented 1 year ago

Perfecto.

plourido commented 1 year ago

Gracias

pulpaulaa commented 1 year ago

@iespinazac quizás estoy haciendo algo mal, pero no me funciona, busqué mucho sobre eso, y lo he tratado de poner en varias partes del código de forma try: ... except KeyboardInterrrupt: ... pero nunca lo atrapa. Pd: estoy en mac, no sé si eso influye

tremendapithon commented 1 year ago

a mi tampoco me funciona desde fedora kde

tremendapithon commented 1 year ago

dice algo de lock.acquiere()

plourido commented 1 year ago

Hola, que tal, espero que se encuentren bien. He investigado y no he podido capturar el error que me indicas. Me podrías ayudar por favor. Puedo capturar un error dentro del if main?

Muchas gracias

iespinazac commented 1 year ago

Hola! Al ocupar KeyboardInterrupt, recuerden poner dentro del try un while True. Confirmen por favor si con eso logran capturar la excepción.

tremendapithon commented 1 year ago

no funciono

tremendapithon commented 1 year ago

solo capture la excepcion de cuando el puerto esta ocupado.

iespinazac commented 1 year ago

Que raro, podrías hacer un push para revisarlo?

tremendapithon commented 1 year ago

listo

iespinazac commented 1 year ago

La instancia del Servidor yo la dejaría arriba del while True, y dentro agregaría un input(). También recuerda que tienes que cerrar el socket del servidor dentro de la excepción KeyboardInterrupt!

tremendapithon commented 1 year ago

Sip, gracias

pulpaulaa commented 1 year ago

Hola, @iespinazac yo también lo probé con lo del while true y no me funcionó, hice push por si lo puedes revisar, no entiendo qué hacer para que capte el ctrl+c (está en el método accept_connections_thread)

iespinazac commented 1 year ago

Hola @pulpaulaa, la excepción debería ir en el main.py de tu servidor luego de instanciarlo (en la parte de abajo). Dentro del try debería ir el while True. Puedes guiarte también por lo que le dije a tu compañer@ 😊

pulpaulaa commented 1 year ago

@iespinazac Ahh entiendo, y a qué te refieres con agregar un input() ? porque no sé qué poner dentro del while True entonces

tremendapithon commented 1 year ago

Ya probe lo que me dijieron, pero no me funciono

plourido commented 1 year ago

Perfecto muchas gracias