Спасибо, вы совершенно правы. Жаль, что этот вопрос не решает мою проблему :) Видимо, дело не в этом... Моя проблема в том, что я не могу таким образом выйти из функции run, в которой происходит обработка входящих сообщений из потока в сокете. Видимо, придётся задать ещё один, более конкретный, вопрос.
А есть ли смысл? Он не отличается он кучи подобных в интернете - открываем сокет, создаём поток, получаем от JS инфу о подключении, обрабатываем заголовок и отправляем ему обратно валидный (для рукопожатия). Всё. Дальше принимаем данные data = self.channel.recv(1024)
Вероятно, очередь в данном случае не подойдёт: в игру должен поступать не тот, кто первый встал в очередь, а тот, кто подходит по какому-то параметру. В данном случае - по уровню пользователя, хранящемуся где-то в базе. То бишь, есть постоянно пополняемый список желающих играть и из него выдёргивается тот, кто подходит новому по уровню. Если никто - добавляется в список.