The python uuid library use libuuid from e2fsprogs (at least in
ubuntu). This particular uuid library spanws a daemon called uuidd to
help with concurrent uuid generation. As far as i know the only way to
disable this behaviour is to compile libuuid with --disable-uuidd
option.
When you run ./manage.py runserver the first time, libuuid launch
uuidd with fork(2). This cause uuidd to inherit all open file
descriptors from the parent process. In this case the parent process
is the python interpreter running manage.py and the open file
descriptors are among other things the open tcp connections. After
that manage.py will (probably) hang whiel serving a request, and if it
is restarted by hand or by changing a file in your application it will
keep saying port already in use until you kill uuidd.
The most simple workaround is to launch uuidd without parameters. This
will make the daemon start without open tcp ports and the library will
not try to run uuidd by it self, then do your normal django
development stuff and when you are done you can kill uuidd with uuidd -
k.