Я использую многопоточный HTML5 Worker, который сможет прервать синхронный запрос XMLHttpRequest, указывающий на не отвечающий URL. Это не блокирует браузер.
Если ваше приложение в будущем должно работать как на настольном компьютере, так и в Интернете, вы можете рассмотреть возможность создания веб-приложения с распространяемым сервером. Такие вещи довольно легко сделать с Python как тривиальными способами, так и более мощными, такими как использование Twisted.
Если только рабочий стол - ваше направление, то действительно, как сказал Алекс, - переходите на PyQt. Он действительно прост в использовании и предоставляет очень мощные возможности графического интерфейса с универсальными привязками к БД.
Что касается БД - какую из них вы привыкли использовать? Если вы, скажем, гуру MySQL, было бы разумно сначала проверить привязки Python к MySQL. Для ORM определенно попробуйте SQLAlchemy.
Возможно, более подробная информация в вопросе поможет дать более полный ответ.
Подробнее (для вашего комментария):
Если PostgreSQL - ваше направление, Python имеет PyGreSQL в качестве привязки. Он имеет открытый исходный код, как и сам Python, поэтому у вас не должно возникнуть проблем с бесплатными приложениями для пользователя. Что касается Python, то я думаю, что это так. Учтите, что многие мощные веб-сайты используют Python (YouTube, Reddit, даже Google для некоторых приложений). Python также используется в нескольких крупномасштабных приложениях, таких как системы управления версиями Mercurial и Bazaar, а также менеджер списков рассылки mailman.
к вашему сведению, для PyQT в книге есть глава 15 с базами данных, это выглядит хорошо. и в книге есть кое-что с данными, просмотром и т. д. Я прочитал это и думаю, что оно того стоит :)
На вашем месте я бы, наверное, сначала посмотрел, работает ли веб-решение на основе Django. Если вам нужно немного улучшить внешний вид, добавьте в смесь jQuery. Если он предоставляет слишком мало функциональности, перейдите на PyQt. Если у вас много очень маленьких приложений, выбирайте сочетание технологий. Ниже вы найдете мои (довольно длинные) аргументы в пользу этой рекомендации.
Веб-приложение против настольного приложения
Год назад у нас была бизнес-база данных, и нам требовался интерфейс. Нам нужно было решить, какую технологию использовать для интерфейса. Мы рассмотрели:
Преимущества PyQt с нашей точки зрения:
Однако мы решили не использовать PyQt и вместо этого решили использовать веб-решение. Причины были:
В двух словах : многофункциональные интерфейсы с большим количеством функций в контролируемой среде развертывания, вероятно, легче реализовать с Qt. Что касается наших легких интерфейсов, нам казалось, что серверное решение лучше.
Какой веб-фреймворк?
Теперь, когда мы определились с технологией, нам нужно было выбрать фреймворк. Мы немного исследовали и подробно рассмотрели две альтернативы:
Мы оценили две альтернативы и в конце остановились на второй. Решение было вызвано нашими действительно «легкими» требованиями к интерфейсу (множество очень маленьких приложений). Пакет программного обеспечения, который мы можем смешивать и сопоставлять по мере необходимости, нам показался лучше. Мы можем повторно использовать SQLAlchemy в ситуациях, когда нам не нужен веб-интерфейс, мы можем просто использовать CherryPy без библиотеки шаблонов и ORM и так далее. Однако во многих других случаях я бы предпочел Django этому стеку.
Подводя итог:
Как писал здесь Будевейн Ремпт, «для простейшего способа создания приложения [[НЕ-веб]] базы данных вы можете взглянуть на ] PyQt ". Он написал это 6 лет назад, но я думаю, что это совершенно верно и сегодня. Модуль pyqt4 QtSql , в частности, поддерживает MySQL, PostgreSQL и несколько других баз данных.