2011-03-23 3 views
2

rake task가 새로운 에피소드를 위해 수천 개의 podcast rss 피드를 긁는 데몬으로 실행 중입니다. 새 에피소드를 발견하면 데이터베이스에 씁니다. 이전 에피소드의 변경 사항을 발견하면 해당 변경 사항을 데이터베이스에 씁니다. 이 데몬은 계속 실행됩니다.Daemon과 View 모두 SQLite 데이터베이스에 동시에 접근하기

이제 사용자가 특정 Podcast의 페이지로 이동한다고 가정 해 봅시다. delayed_job으로 주어진 팟 캐스트에 대한 새로운 에피소드를 가져올 아약스 폴링 (혜성) 프로세스가 있습니다.

지금은 한 번에 하나만 실행할 수 있습니다. 데몬을 실행하거나 사용자가 delayed_job 프로세스를 트리거하도록 할 수 있습니다. 필자는 레일스에 익숙하지 않고 필요한 동시성을 활성화하는 방법을 실제로 이해하지 못합니다. 내 질문은이 시점에서 개념적이기 때문에 여기에 코드를 게시하지 않았습니다. 이러한 종류의 동시성을 처리 할 수있는 응용 프로그램을 설계하려면 어떻게해야합니까?

MySQL로 전환하면 이러한 문제가 완화 될 수 있다는 인상을 받고 있지만, 여기 퍼즐의 핵심 요소가 누락 된 것 같습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사.

답변

2

누락 된 부분은 이것입니다. SQLite는 파일 기반 데이터베이스입니다. 즉, 프로세스가 파일에 액세스하면 파일을 잠급니다. 데이터를 업데이트하는 데몬이나 액세스하는 데 관계없이 한 번에 한 가지만 할 수 있습니다.

해결 방법은 MySQL과 같이 적절한 데이터베이스로 이동하는 것입니다. SQLite의 기능을 훨씬 능가하여 사용하는 방식으로 사용되지 않습니다.

+0

감사합니다. Srdjan Pejic. 나는 이것이 그 해답 이었으면 좋겠다. 훈련 바퀴를 벗을 시간. – lightyrs

관련 문제