Daemon и View одновременно обращаются к базе данных SQLite - PullRequest
2 голосов
/ 23 марта 2011

У меня есть задача rake, работающая в качестве демона, которая очищает тысячи RSS-каналов подкастов для новых эпизодов. Если он находит новый эпизод, он записывает его в базу данных. Если он находит изменение в старом эпизоде, он записывает это изменение в базу данных. Этот демон работает постоянно.

Теперь предположим, что пользователь заходит на страницу для определенного подкаста. На мой взгляд, у меня есть процесс опроса ajax (комета), который будет извлекать новые эпизоды для данного подкаста с delayed_job.

Сейчас я могу запустить только один из них за раз. Я могу либо запустить демон, либо позволить пользователю запустить процесс delayed_job. Я новичок в Rails и не очень понимаю, как включить параллелизм, который мне нужен. Я не разместил здесь никакого кода, потому что мой вопрос действительно концептуальный на данный момент. Как можно разработать приложение, чтобы справиться с таким параллелизмом?

У меня сложилось впечатление, что переключение на MySQL может облегчить некоторые из этих проблем, однако я чувствую, что здесь не хватает ключевой части головоломки. Любая помощь будет принята с благодарностью. Спасибо.

1 Ответ

2 голосов
/ 23 марта 2011

Кусок, который вам не хватает, это. SQLite - это файловая база данных. Это означает, что когда процесс обращается к ней, он блокирует файл. Вот почему вы можете делать только одну вещь за раз, будь то ваш демон, обновляющий данные, или представление, обращающееся к ним.

Решение состоит в том, чтобы перейти к правильной базе данных, такой как MySQL, как вы предложили. Вы далеко переросли возможности SQLite, он не предназначен для использования так, как вы его используете.

...