pfaffman
(Jay Pfaffman)
1
Ansible를 실행하여 Discourse 설치를 수행하는 플러그인을 하나 만들었습니다. (정말, 정말로 설치 주문을 받기 위해 WordPress를 사용하는 것을 그만두고 싶습니다!)
처음에는 fork를 호출하여 작업을 시작했는데, 테스트에서는 잘 작동했지만 더 "Discourse스러운 방식"으로 처리해야겠다고 생각했습니다.
그래서 프로세스를 실행하는 일회성 작업을 만들었지만, 다음과 같이 종료(kill)됩니다:
E, [2020-12-16T12:53:39.662683 #3158277] ERROR -- : worker=0 PID:3158425 timeout (61s > 60s), killing
클래스에 sidekiq_options queue: 'low'를 추가해 보았고, 그다음에는 작업을 실행하는 함수에도 추가해 보았습니다.
그 후 작업에서 프로세스를 실행하는 것을 건너뛰고, 모델에서 직접 실행해 보았습니다.
Discourse::Utils.execute_command(*instructions)
rails c에서 실행하면 잘 작동하지만, 어떻게 실행하든(이것은 ./bin/unicorn으로 시작된 Ubuntu 개발 환경입니다) 프로세스가 종료됩니다.
Falco
(Falco)
2
일회성 작업은 말 그대로 한 번만 실행되는 작업입니다. 필요하신 것은 컨트롤러에 요청이 도달하는 것과 같은 트리거에 의해 예약되는 정규 작업으로 보입니다.
정규 작업은 일반 사용 환경에서 일부 작업이 그러하듯 60초보다 길게 실행될 수 있습니다.
pfaffman
(Jay Pfaffman)
3
글쎄, 작업을 일반 잡으로 옮기고 ./bin/unicorn 대신 ./bin/rails s로 실행해 보았지만 여전히 문제가 해결되지 않았습니다.
이건 말이 안 되는데, 해당 작업 중 상당수가 1분 이상 걸린다는 건 잘 알고 있거든요.
Falco
(Falco)
4
구체적으로 어떻게 잡을 실행하고 계신가요? 관련 Ruby 코드 부분을 붙여넣어 주실 수 있나요?
Falco
(Falco)
6
pfaffman
(Jay Pfaffman)
7
그래서 질문을 해야 하는 거예요! 제가 그냥 원시인이라서요. (동굴에 사는 분들에게는 의도적으로 모욕을 드린 게 아닙니다.)
물론 그럴 이유는 없어요. 그냥 어떻게 호출해야 하는지 도저히 모르겠어서요!
정말 감사합니다!
… 여전히 실행 중입니다! …
정말 감사합니다. 이것만 해도 최소 2시간은 걸렸는데…
다음 단계: 실제 프로덕션 서버에서 실행해보기…