2013-02-08 1 views
1

나는 얇은 서버 + Ruby on Rails + MySQL을 사용하고 있으며 매 시간마다 데이터베이스를 많이 처리하는 몇 개의 cronjob을 가지고있다 (스크립트는 약 1-2 분 정도 걸린다) .레일즈 및 mysql에서 루비로 응답하지 않는 페이지

cronjobs가 실행되면 웹 사이트가로드를 중지하고 cronjob 완료 후에 만 ​​응답합니다.

제 질문은 어떻게하면 모든 것을 비동기식 또는 병렬 식으로 만들 수 있습니까? cronjobs가 실행 중일 때 웹 사이트가 정상적으로로드되도록하려면 어떻게해야합니까?

가이드로 연결되는 링크 또는 일반적인 조언을 많이 부탁드립니다.

업데이트 :

내가 cronjob를의 코드를 공유 할 수 없습니다 죄송하지만, 기본적으로는 같은 요청의 수천을 수행 한 후

SELECT 1 AS one FROM `table` WHERE `table`.`type_id` = BINARY '1251625345_4146645145056' LIMIT 1 

와 삽입의 천 이전의 경우 몇 가지 하나는 null을 반환합니다 (즉, 항목이 존재하지 않는다는 의미입니다)

+0

cronjob의 기능은 무엇입니까? 이 코드를 공유 할 수 있습니까? – Swards

+0

질문을 편집하고 설명을 추가했습니다. – Bndr

답변

1

cron 작업이 Rails 응용 프로그램에 선택/삽입을 요청합니까?

그렇다면,

씬은 단일 스레드 웹 서버입니다. 하나 이상의 요청을 동시에 처리 할 수 ​​없습니다. cronjob은 작업을 수행하기 위해 다른 Ruby 프로세스 (예 : 레이크 작업)를 시작해야합니다.

+0

안녕하세요! 레이크 작업과 루비 프로세스에 대한 인터넷 검색을 수행했는데 스크립트를 실행하기 위해 wget을 사용하는 것이 좋지 않은 아이디어였습니다. 이제는 "cd/to/directory && rake task : name"과 같은 cronjob에서 실행되는 여러 가지 레이크 작업을 만들었으며 모든 작업이 메인 사이트와 블로킹되지 않는 것으로 보입니다. 감사! – Bndr

관련 문제