Laurent Luce's Blog

Python and cryptography with pycrypto

We are going to talk about the toolkit pycrypto and how it can help us speed up development when cryptography is involved. Hash functions Encryption algorithms Public-key algorithms Hash functions A hash function takes a string and produces a fixed-length string based on the input. The output string is called the hash value. Ideal hash... » read more

Python list implementation

This post describes the CPython implementation of the list object. Lists in Python are powerful and it is interesting to see how they are implemented internally. Following is a simple Python script appending some integers to a list and printing them. As you can see, lists are iterable. List object C structure A list object... » read more

Python threads synchronization: Locks, RLocks, Semaphores, Conditions and Queues

This article describes the Python threading synchronization mechanisms in details. We are going to study the following types: Lock, RLock, Semaphore, Condition and Queue. Also, we are going to look at the Python internals behind those mechanisms. The source code of the programs below can be found at github.com/laurentluce/python-tutorials under threads/. First, let’s look at... » read more

OpenStack Nova internals of instance launching

This article describes the internals of launching an instance in OpenStack Nova. Overview Launching a new instance involves multiple components inside OpenStack Nova: API server: handles requests from the user and relays them to the cloud controller. Cloud controller: handles the communication between the compute nodes, the networking controllers, the API server and the scheduler.... » read more

OpenStack Nova nova.sh script explained

Update 11/24/2011: Updated article based on the latest nova.sh script. This article describes the internals of the script nova.sh used to get the OpenStack Nova source code, install it and run it. Nova is a cloud computing fabric controller, the main part of an IaaS system. The script can be retrieved using Git: Arguments The... » read more

Distributed messaging using RabbitMQ and Python

This tutorial shows how to distribute messages to multiple servers for processing. We will be using RabbitMQ which is based on AMQP. The way messaging works is that you have producers producing messages and consumers consuming them. We are going to have 1 producer generating random integers and 2 consumers: 1 consuming the odd integers... » read more