У меня такая же проблема, как и у вас.
Я также думал об использовании Channel API, однако свободная квота довольно низкая (100 каналов создаются в день, каждый клиент - один канал).
Вот решение, которое я строю:
Вся логика сервера выполняется во время выполнения Python ядра приложения
движок приложения обслуживает весь HTML и клиентский код
Я запускаю сервер node.js socket.io на dotcloud (используя их бесплатный уровень)
сервер node.js устанавливает http-сервер, который прослушивает получение запросов по нескольким специальным конечным точкам URL (например, myapp-on.dotcloud.com/room/[room_id]), и при его вызове запускает сокет .io трансляция для соответствующих клиентов
HTML-клиенты, созданные на движке приложения, подключаются к моему myapp-on.dotcloud.com
Весь пользовательский ввод в клиенте отправляется в движок приложения через обычный ajax post / get
когда код сервера движка приложения должен что-то отправить клиенту, он производит выборку URL-адреса по соответствующему URL-адресу (myapp-on.dotcloud.com/room/[room_id]), который вызывает отправку сообщения через socket.io для подключенные клиенты
Я еще не реализовал это, но звучит как выполнимый план
идея состоит в том, чтобы сохранить всю логику в движке приложения и использовать только сервер socket.io в качестве отправителя сообщений