2011-03-23 81 views
2

我有一个rake任务作为守护进程运行,为新剧集擦除了数千个podcast rss feed。如果它发现新的情节,它将它写入数据库。如果它发现对旧集的更改,则会将更改写入数据库。这个守护进程不断运行。守护进程和查看两个同时访问SQLite数据库

现在我们假设用户转到特定播客的页面。在我看来,我有一个ajax轮询(彗星)过程,可以使用delayed_job为给定的播客获取新剧集。

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

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

回答

2

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

解决方案是移动到一个合适的数据库,如MySQL建议。你已经远远超出了SQLite的功能,它并不意味着你使用它的方式。

+0

谢谢Srdjan Pejic。我希望这是答案。我想是时候把训练轮卸下来了。 – lightyrs 2011-03-23 20:30:26