uptime – Librería multiplataforma para la disponibilidad del sistema

Versión: 2.5+, 3.x (en algunas plataformas)
Descargas: uptime en PyPi

Se trata de uptime, un paquete multiplataforma para Python 2 y 3 que permite calcular el uptime del sistema desde el cual se ejecuta. Se define uptime como una medida del tiempo que una máquina, típicamente una computadora, ha estado trabajando y disponible. Generalmente se utiliza en el ámbito del webhosting o almacenamiento web para determinar la calidad del servicio.

Realmente el módulo es un wrapper alrededor de las distintas prestaciones de cada sistema. En otras palabras, llama a las funciones, comandos o ejecuta métodos propios de la plataforma dependiendo de cada una (es por esto que depende tanto del módulo ctypes). Por ejemplo, en sistemas operativos basados en Linux se lee el contenido de /proc/uptime para calcular la disponibilidad del sistema. En Windows, se utiliza la función de la API GetTickCount() y GetTickCount64(). En Mac OS, se usa la función MacOS.GetTick únicamente en Python 2, ya que el módulo ha sido removido a partir de la versión 3.

Según la documentación oficial (la cual puedes encontrar en este enlace) el módulo uptime ha sido probado en las siguientes plataformas:

  • Android 4.0.3
  • Cygwin 1.7.17-1
  • Debian Linux 6.0.6
  • FreeBSD 9.1
  • Haiku R1 Alpha 4.1
  • Icaros Desktop 1.5.1
  • Mac OS 9.0
  • Mac OS X 10.7 “Lion”
  • MINIX 3.2.0
  • OpenIndiana 151a7
  • Plan 9 from Bell Labs, Fourth Edition
  • ReactOS 0.3.14
  • RISC OS 5.19
  • Syllable Desktop 0.6.7
  • Syllable Server 0.1
  • Windows 98 SE
  • Windows XP SP 3

Sin embargo, otras plataformas fuera de esta lista también están soportadas.

Sin más, pasemos al código. A continuación un ejemplo utilizando la función uptime(), la principal, la cual retorna el tiempo en segundos que el sistema ha estado funcionando y disponible.

>>> import uptime
>>> uptime.uptime()
33406.506

En este caso el uptime de mi sistema es de 33406 segundos, que aproximadamente son 9 horas (33406.506 / 60 / 60). Pero no es necesario que realices este tipo de cálculos, la función boottime() retorna el uptime como una instancia de datetime.datetime.

>>> uptime.boottime()
datetime.datetime(2014, 2, 13, 10, 49, 21, 346000)
>>> print uptime.boottime()
2014-02-13 10:49:21.351000

Ambas funciones retornarán None si no se ha podido determinar el tiempo transcurrido. En el último ejemplo, RuntimeError será lanzado si no se encuentra el módulo datetime.

Éstas son las funciones principales del módulo, por las únicas que deberías preocuparte. También puedes acceder a las funciones (no tan convencionales) que se utilizan específicamente para cada plataforma. Por ejemeplo, _uptime_linux(), _uptime_max(), _uptime_windows(); aunque uptime() y boottime() bastarán en la mayoría de los casos. Obviamente, en sistemas basados en Linux llamadas a _uptime_windows() retornará None (y viceversa).

Si se llamase a uptime como un script, éste retornará la disponibilidad del sistema de tal manera que pueda ser fácilmente legible para humanos. Por ejemplo:

$ python -m uptime
Uptime: 9 hours, 30 minutes, 43.15 seconds.

Si bien el módulo ha sido principalmente desarrollado para Python 2, yo he podido ejecutarlo en la versión 3.3 sin ningún tipo de problemas. Usuarios de Mac OS no podrán decir lo mismo, como comenté anteriormente.

Ahora tus aplicaciones (sobretodo aquellas basadas en la web) podrán determinar la disponibilidad por sí mismos de los servidores / sistemas en las que corren.



Deja una respuesta