2016-10-20 3 views
0

CSV의 내용을 여러 가지 "읽기"로 구문 분석하는 앱을 만들고 있습니다. 그런 다음이 판독 값을 데이터베이스에 추가 된 REST API 서버에 게시합니다.REST API에 게시하기위한 항목 대기열

지금까지는 그렇게 좋았습니다 (위가 효과적입니다). 그러나 때때로 서버와의 연결 문제 (지연 또는 API가 어떤 이유로 든 중단되는 경우)가있을 ​​수 있음을 알고 있습니다.

이 문제를 해결하기 위해 Sidekiq을 사용하여 전송을 비동기 적으로 수행하도록 계획했습니다. 그러나, 나는 몇 가지 질문이 있습니다

  • 오전 i를 CSV 구문 분석 할 때 바로이 일을 대기 한 후 게시물을 수행 할 ActiveJob을 만들고 오프 최고? 연결 문제가있는 경우 결국 추가되는 순서대로 다시 시작됩니다.

  • Sidekq에게 작업을 "다시 시도"할 필요가 있습니까, 아니면 자동으로 실행 되나요?

  • 마지막으로, Sidekiq이 Redis를 사용하므로 큐에 항목이있는 동안 응용 프로그램 서버가 손상되면 손실되지 않도록 지속성을 활성화해야합니까?

다른 의견이 있습니까? 아니면이 문제를 해결하는 더 좋은 방법일까요?

답변

0

두 가지 시나리오

1

) 당신이 작업에에 CSV 파일의 전체 처리를 넣을 예정이있는 경우에, 나는 작업이 다시 것이다 실패 할 경우가로 완벽하게 작동하지 않습니다 생각이있다 모든 행에 대해 반복하십시오. CSV에 다른 열을 추가하여 행을 표시하지 않으면 read라고 말합니다.

2) Sidekiq에서 각 행을 별도의 작업으로 추가합니다. 단 한 가지 단점은 크기가 큰 CSV 파일이있는 경우에 대비해 너무 많은 작업을 생성 할 수 있다고 생각할 수 있지만 많이 절약 할 수 있다는 것입니다. CSV 쪽에서 처리 중입니다.

+0

CSV는 1-2 개의 행만 가지며, 각 행은 15 개 정도의 값을 가지며 5 분마다 도착합니다. 그런 점을 염두에두고, "포스트 행"작업을 만들고 "프로세스 CSV"작업보다는 행 단위로 처리해야한다고 생각합니다. –

+0

@JoeCzucha, 그렇습니다. 더 나은 접근 방법이라고 생각합니다. 이 방법은 실패한 작업을 자동으로 처리하고 성공적으로 처리 된 행에 대해 다시 실행되지 않습니다. –

+0

팁 주셔서 감사합니다. 자동으로 큐를 돌리는 CRON 작업을 매 n 분마다 실행해야합니까, 아니면 Sidekiq이 자동으로 실행합니까? 응용 프로그램이 충돌하거나 다시 시작될 경우 대기열을 다시 시작 하시겠습니까? –