Com CGIs, um erro de 500 servidores é geralmente causado pela saída de dados incorretos de cabeçalho pelo seu CGI antes do código HTML. Você deve enviar o tipo de conteúdo e os retornos de carro TWO "\ n" antes do início do html. Qualquer saída inesperada causará o erro 500.
Eu não sou um cara do Python, então aqui está um exemplo do Perl. ; -)
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";
Você pode encontrar a causa exata nos registros do seu servidor. Sempre verifique primeiro quando você vir 500 erros.