【问题标题】:Daemon and View both accessing SQLite Database at the same timeDaemon 和 View 同时访问 SQLite 数据库
【发布时间】:2011-07-21 13:03:13
【问题描述】:

我有一个作为守护进程运行的 rake 任务,它为新剧集抓取数千个播客 RSS 提要。如果它找到一个新剧集,它会将其写入数据库。如果它发现对旧剧集的更改,它将将该更改写入数据库。此守护进程不断运行。

现在假设用户访问特定播客的页面。在我看来,我有一个 ajax 轮询(彗星)进程,它将为给定的播客使用延迟作业获取新剧集。

现在我一次只能运行其中一个。我可以运行守护程序,也可以让用户触发 delay_job 进程。我是 Rails 新手,并不真正了解如何启用我需要的并发性。我没有在这里发布任何代码,因为此时我的问题实际上是概念性的。如何设计一个能够处理这种并发的应用程序?

我的印象是切换到 MySQL 可能会缓解其中一些问题,但是,我觉得我在这里错过了一个关键的难题。任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: mysql ruby-on-rails sqlite concurrency locking


    【解决方案1】:

    你缺少的是这个。 SQLite 是一个基于文件的数据库,这意味着当一个进程访问它时,它会锁定文件。这就是为什么您一次只能做一件事,无论是您的守护进程更新数据还是访问它的视图。

    解决方案是移动到适当的数据库,如您建议的 MySQL。您已经远远超出了 SQLite 的功能,它不应该以您使用它的方式使用。

    【讨论】:

    • 谢谢 Srdjan Pejic。我希望这就是答案。我想是时候卸下训练轮了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    相关资源
    最近更新 更多