맘같아선 스프링이나 요런걸로 짜고싶은데
팀에서 쓰는 주 언어가 python이고 딴언어는 솔직히 적용하기 힘든상황이라
python을 써야하는데, 그래서 django 를 쓰기로 결정했음.
drf 쓸 예정이고, logstash에서 전달해 준 데이터를 django에서 처리해서 저장하도록 할 예정인데,
문제는 해당 데이터 처리 시 최대 30초 가량 걸릴 수도 있어서 해당 작업을 셀러리에 맞기려고 하는데..
브로커는 rabbitmq를 쓸 예정
근데 django서버와 celery worker를 분리하여 다른 서버에 두는것도 가능하남?? 이걸 어떻게 해야할지 감이 안옴..
나는 django에서 브로커로 메시지(작업에 필요한 데이터) 날려주고, celery worker에서 요걸 받아 처리(외부로 request 때리고, 파싱하고, 저장하고) 하고 싶은데.. 무슨 예가 다 django에서 celery 실행하는 예밖에 없어서 잘 몰것네;;
celery가 내가 생각한 대로 돌아가는 게 아닌걸까?
13개의 댓글
무분별한 사용은 차단될 수 있습니다.
뱀고기
나같으면 jenkins api에 build parameter 붙이겠음
백그라운드 작업도 파이선 로직일 필요는 없잖아?
headfish
아 해당 데이터를 가공해서 외부에 있는 서버에 던저주고, 다시 받아서 파싱하고, 다른 작업도 좀 해야하고 최종 결과물을 디비에 저장해야 해서.. 여기서 외부 서버에 던저주고 받는거에서 시간이 좀 걸림....
뱀고기
아 결과데이터를 db에 넣어야되는구나 그러면 셀러리 써야겠네
headfish
엉 그런데 예제들이 다 장고와 셀러리를 한서버에서 같이 돌리는 예제 밖에 없어.. 난 셀러리 worker들을 별도로 분리해서 딴곳에서 쓰고싶거든..... 후 클라우드 쓰고싶은데 상황상 그러지도 못하고, docker로 분리해서 별도로 관리 하고싶거든
뱀고기
https://github.com/aantonw/flask-remote-worker/blob/master/celery_tasks/tasks.py
headfish
생큐 생큐!!!!
headfish
그리고 장고 ORM 이거 편한줄 잘 모르겠다... sql알케미가 더 좋은거 같음... 샹.. 제한이 너무 많은거 같음..
뱀고기
장고orm은 코드로 db 빨리짜서 대충 나오는 관리자페이지 쓸때나 좋지 이미 있는 db에 맞추긴 쉽지않음
headfish
ㄹㅇ 처음부터 장고를 쓸 작정으로 model 작성하고 하는거라면 편할 수 있는데.... 울팀 사람들이 프로그래밍을 전문적으로 하는 팀도 아니고,파이썬은 업무 자동화 위주로 사용하거든?
꽤 예전부터 팀에서 쓰던 장고로 만든 페이지도...
아니 db 커넥터를 직접 만들어서 가져와서 쓰더라고 ㅋㅋㅋㅋㅋ 싱글톤으로라도 만들었음 몰겠는데;
request들어올때마다 db객체 계속 생성하게 만들어놨더라고 ㅋㅋㅋ 하오 db도 계속 수정될 수 있는 상황이다 보니 진짜 장고 ORM으로 쓸라니 너무 스트레스 받음..
특히 join이 외래키 설정된게 아니라면 쓰기 너무 힘들더라.. 결국 raw query로 처리;;;;
headfish
혹 하나더 질문해도 되? nginx+uwsgi+django 로 구성되어 있는데, 중간중간 nginx에서 uwsgi로 못넘겨주는건지 nginx 에러 로그에 upstream prematurely closed connection while reading response header from upstream 에러가 발생하는데 요건 timeout을 늘려주면 해결되려나?
뱀고기
백그라운드로 처리해서 애초에 요청 처리가 오래걸리는거면 니가 생각한게 맞음
근데 웹서버가 그걸 기다리게 해야되나? 잘 모르겠음 나같으면 폴링 API 따로 만들어서 작업 상태 보여줄듯
headfish
만약 작업이 오래걸려서 발생하는 문제였다면 셀러리로 해당 작업 넘기고 끝내버리면 해결될꺼 같긴한데... 하루 한 3~4천건 req중에서 5개정도 저런식으로 error 발생해서 스트레스 받는다... 차라리 작업 중 에러발생이면 아 내가 잘못짰구나 하는데 저건 머 어디서 머땜에 오류난건지 찾을 수가 없으니;;;; 그리고 nginx로 리버스 프록시로 라운드로빈방식으로 2개 django로 넘겨주는데,, nginx는 nginx+ 쓰지 않는 이상 모니터링 안되지? HAProxy로 갈아타야 하나
뱀고기
ㅇ 모니터링하려면 nginx plus. uwsgi 안죽는거도 체크해봐야됨