Django — Runserver development server is slow on cygwin

The django development server is extremely slow through cygwin and not very reliable in the long run due to a natural limitation of Cygwin running as a windows process: the vfork resource availability errors.

My solution is to set up multiple environments – one for cygwin and a separately compiled environment for windows. That way, I get the full speed of a native windows python and the full power of the unix shell.

Modify to detect platform

We need to modify sys.path on demand depending on which platform the command is run from.

#!/usr/bin/env python
import os
import sys
import platform

DIRNAME = os.path.dirname(__file__)

# detect platform - if windows, use winenv dir for windows specific builds
if platform.system().upper() == 'WINDOWS':
    env_path = '../winenv/Lib/site-packages' # path to your win env
    env_path = '../env/lib/python2.6/site-packages' # path to your usual env

full_env_path = os.path.join(DIRNAME, env_path)
sys.path.insert(0, full_env_path)

print 'Environment path is... {path}'.format(path=full_env_path)

Set up your windows environment

Naturally you will need to have a python environment working in windows first.

I use a pip requirements file to deploy my libraries, so installing the separate environment is as easy as typing ‘pip install -E winenv -r pip_requirements.txt’ on my windows command prompt.

Enjoy high performance runserver

You’re done. Open up a windows command prompt and run the development server and forget about it! Develop on cygwin while windows runs the dev server.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s