mirror of
https://github.com/kennethreitz/python-guide.git
synced 2026-06-05 23:00:18 +00:00
Merge pull request #296 from tommy3001/master
Psutil system resources library added to scenarios/admin
This commit is contained in:
@@ -120,6 +120,60 @@ State files can be written using YAML, the Jinja2 template system or pure python
|
||||
|
||||
`Salt Documentation <http://docs.saltstack.org/en/latest/index.html>`_
|
||||
|
||||
|
||||
Psutil
|
||||
------
|
||||
`Psutil <https://code.google.com/p/psutil/>`_ is an interface to different system information (e.g. CPU, memory, disks, network, users and processes).
|
||||
|
||||
Here is an example to be aware of some server overload. In case of some failed test (net, CPU) it send an email.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
# Functions to get system values:
|
||||
from psutil import cpu_percent, net_io_counters
|
||||
# Functions to take a break:
|
||||
from time import sleep
|
||||
# Package for email services:
|
||||
import smtplib
|
||||
import string
|
||||
MAX_NET_USAGE = 400000
|
||||
MAX_ATTACKS = 4
|
||||
attack = 0
|
||||
counter = 0
|
||||
while attack <= MAX_ATTACKS:
|
||||
sleep(4)
|
||||
counter = counter + 1
|
||||
# Check the cpu usage
|
||||
if cpu_percent(interval = 1) > 70:
|
||||
attack = attack + 1
|
||||
# Check the net usage
|
||||
neti1 = net_io_counters()[1]
|
||||
neto1 = net_io_counters()[0]
|
||||
sleep(1)
|
||||
neti2 = net_io_counters()[1]
|
||||
neto2 = net_io_counters()[0]
|
||||
# Calculate the bytes per second
|
||||
net = ((neti2+neto2) - (neti1+neto1))/2
|
||||
if net > MAX_NET_USAGE:
|
||||
attack = attack + 1
|
||||
if counter > 25:
|
||||
attack = 0
|
||||
counter = 0
|
||||
# Write a very important email if attack is higher then 4
|
||||
TO = "you@your_email.com"
|
||||
FROM = "webmaster@your_domain.com"
|
||||
SUBJECT = "Your domain is out of system resources!"
|
||||
text = "Go and fix your server!"
|
||||
BODY = string.join(("From: %s" %FROM,"To: %s" %TO,"Subject: %s" %SUBJECT, "",text), "\r\n")
|
||||
server = smtplib.SMTP('127.0.0.1')
|
||||
server.sendmail(FROM, [TO], BODY)
|
||||
server.quit()
|
||||
|
||||
|
||||
A full terminal application like a widely extended top which is based on psutil and with the ability of a client-server
|
||||
monitoring is `glance <https://github.com/nicolargo/glances/>`_.
|
||||
|
||||
|
||||
Chef
|
||||
----
|
||||
|
||||
|
||||
@@ -9,66 +9,20 @@ Python Imaging Library
|
||||
----------------------
|
||||
|
||||
The `Python Imaging Library <http://www.pythonware.com/products/pil/>`_, or PIL
|
||||
for short, is *the* library for image manipulation in Python.
|
||||
for short, is *the* library for image manipulation in Python. Unfortunately, its
|
||||
development has stagnated, with its last release in 2009.
|
||||
|
||||
It works with Python 1.5.2 and above, including 2.5, 2.6 and 2.7. Unfortunately,
|
||||
it doesn't work with 3.0+ yet.
|
||||
Lucky for you, there's an actively-developed fork of PIL called `Pillow <http://python-imaging.github.io/>`_ -
|
||||
it's easier to install, runs on all operating systems, and supports Python 3.
|
||||
|
||||
Installation
|
||||
~~~~~~~~~~~~
|
||||
|
||||
PIL has a reputation of not being very straightforward to install. Listed below
|
||||
are installation notes on various systems.
|
||||
Before installing Pillow, you'll have to install Pillow's prerequisites. Find
|
||||
the instructions for your platform `here <https://pypi.python.org/pypi/Pillow/2.1.0#platform-specific-instructions>`_.
|
||||
|
||||
Also, there's a fork named `Pillow <http://pypi.python.org/pypi/Pillow>`_ which is easier
|
||||
to install. It has good setup instructions for all platforms.
|
||||
|
||||
Installing on Linux
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Arch Linux
|
||||
``````````
|
||||
|
||||
PIL is maintained in the official community repository, and installed with the system installer as:
|
||||
After that, it's straightforward:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ sudo pacman -S python2-imaging
|
||||
|
||||
Ubuntu 12.10
|
||||
````````````
|
||||
|
||||
Can be installed on the command line as:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ sudo apt-get install python-imaging
|
||||
|
||||
|
||||
Installing on Mac OS X
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
PIP doesn't know about the Mac OS X Freetype paths. To rectify that:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ ln -s /usr/X11/include/freetype2 /usr/local/include/
|
||||
$ ln -s /usr/X11/include/ft2build.h /usr/local/include/
|
||||
$ ln -s /usr/X11/lib/libfreetype.6.dylib /usr/local/lib/
|
||||
$ ln -s /usr/X11/lib/libfreetype.6.dylib /usr/local/lib/libfreetype.dylib
|
||||
|
||||
then:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ brew install libjpeg
|
||||
$ pip install PIL
|
||||
|
||||
|
||||
Installing on Windows
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. todo::
|
||||
Notes on installing on Windows machines
|
||||
|
||||
|
||||
$ pip install Pillow
|
||||
|
||||
@@ -319,7 +319,7 @@ to use.
|
||||
import tornado.ioloop
|
||||
import tornado.web
|
||||
|
||||
# Load tamplate file templates/site.html
|
||||
# Load template file templates/site.html
|
||||
TEMPLATE_FILE = "site.html"
|
||||
templateLoader = FileSystemLoader( searchpath="templates/" )
|
||||
templateEnv = Environment( loader=templateLoader )
|
||||
|
||||
Reference in New Issue
Block a user