2016-07-01 6 views
1

나는 느슨한 봇을 생성하고, 레일의 초기화에과 같이 실행 : 비록 다수의 노동자와 유니콘을 실행실행 루비 스레드

Thread.abort_on_exception = true 

Thread.new do 
    CorgiBot.run 
end 

, 각각의 근로자는 여유를 실행 봇. 그런 다음 각 작업자가 실행중인 동일한 슬랙 봇을 가지며 수신 한 각 명령에 대해 여유있는 응답/메시지를 반환합니다.

나는 다양한 이유로 자체 서버에서 느슨한 봇을 실행하지 않도록 노력하고 있습니다. 유니콘을 사용하거나 Ruby 나 Rails에서 설정을 변경하는 것에 대한 해결책은 무엇입니까?

답변

1

유니콘을 여러 명 운영한다는 것은 여러 개의 다른 프로세스를 실행하고 있다는 것을 의미합니다. 기본적으로 여러 개의 봇 복사본을 실행하고 있습니다.

쉬운 해결책은 유니콘 프로세스에서 실행하는 것이 아니라 별도의 독립 실행 형 프로세스에서 실행하는 것입니다. 문제가 해결되지 않을 경우

rails r 'CorgiBot.run' 

는, 당신은 어딘가 공유 잠금을 취할 필요하며 승리, 다른 하나는 실패 취득 할 수있는 첫 번째 프로세스 : 제공자에게 당신의 레일 응용 프로그램 환경에서 스크립트를 실행하는 runner 명령을 레일 . 파일 잠금이나 Redis의 SETNX 명령을 사용하여이 작업을 수행 할 수 있습니다.