заблокированные ошибки базы данных SQLite с приложением WSGI python - PullRequest
0 голосов
/ 04 июля 2011

У меня проблемы с выполнением нескольких вызовов ajax POST для функций, которые обращаются к базе данных в моем веб-приложении с использованием sqlite и mod-wsgi. У меня нет проблем с выполнением запросов к одной функции, но как только я вызываю другую функцию, я начинаю получать ошибки «база данных заблокирована». Я попытался установить переменные как глобальные и просто получить к ним доступ в двух функциях, а также открыть и закрыть базу данных в каждой функции, но безрезультатно.

Как правильно связываться с базой данных, если в вашем коде только одна прикладная функция? Потоки? Постоянные связи?

Я раньше использовал Django, но хотел чего-то голого для этого простого приложения, работающего на моей локальной машине.

Соответствующий раздел кода:

con = sqlite3.connect("/var/www/Knowledge/eurisko.sqlite")
con.row_factory = sqlite3.Row
cursor = con.cursor()
cursor.execute("update notes_content set c1content=?, c2timestamp=?
where c0title=?", [content, timestamp, title])
con.commit()
cursor.close()
con.close()

Полный файл находится здесь: http://pastebin.com/7yuiZFi2

Я использую Apache 2.2 на Ubuntu 10 с libapache2-modwsgi и python 2,7.

1 Ответ

0 голосов
/ 06 июля 2011

См. Предупреждения о параллельном доступе из нескольких процессов в документации по SQLite.

http://www.sqlite.org/faq.html#q5

Эта информация была предоставлена ​​в списке mod_wsgi, где также задавался вопрос, но после этого.

Это может быть проблемой, потому что Apache / mod_wsgi поддерживает конфигурации как с одним, так и с несколькими процессами. Скорее всего, OP использует многопроцессную конфигурацию. Также см .:

http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

для описания модели процесса / потоков Apache / mod_wsgi.

...