Разница между CGI и WSGI вот в чём. Я конечно только примерно представляю, но объяснить, думаю, могу.
CGI прост как пробка.
Идёт запрос на скрипт, например:
example.com/script.phpВеб-сервер запускает скрипт и даёт ему данные http-запроса.
Скрипт запускается, результат запроса выкидывает в stdout, выключается. Сервер берёт ответ, пересылает его клиенту. Всё.
Недостатки:
Нельзя делать сложные процессы, вся программа должна укладываться в схему:
Включиться - получить данные запроса - выкинуть ответ за полсекунды - выключиться. Про асинхронность, многопоточность, оптимизации можно забыть.
Каждый адрес связан со своим файлом. Т.е. в принципе там может лежать 15 несвязанных скриптов, да и всё.
Преимущества: так как сервер сам включает и выключает скрипты, их легче контролировать, поэтому легче делать хостинги и не рисковать, что один сайт загрузится на полчаса и выжрет все ресурсы.
По сути дела именно из-за этого пхп, каким бы убогим он ни был, и стал всея языком интернета - CGI выгоднее для хостеров, скриптовый ЯП точно проще какого нибудь С++, удачных конкурентов у пхп в этой нише не было, а там пошло поехало.
WSGI я только приблизительно представляю: прога запускается только однажды в начале, сервер с ней связывается, сообщает о каждом запросе, прога сама решает что с ним делать. Прога не перезапускается на каждый запрос, независима от сервера, может творить что угодно, любую асинхронность-многопоточность. Да хоть юзеров в словаре хранить!