이런건 장고로 어떻게 구현해야할까요…? 사용자 쪽지함이 있고, 사용자가 일정을 등록하

 
Han Cold Kim

이런건 장고로 어떻게 구현해야할까요…?

사용자 쪽지함이 있고, 사용자가 일정을 등록하는데,

해당 일정을 기준으로 특정시점이 되면 사용자 쪽지함에 일정 알림을 넣어줘야하는데…

이런거 어떻게 가능할까요…?

예를들어 설명하면

‘장고 송년모임’이라는 일정을 12-28일 오후 6:00로 등록을하고, 등록된 시점보다 3시간 전에 쪽지함에 알림을 해주도록 하고싶은데요…

이런건 어찌 구현하면 될까요…?

sleep 같은 걸로 하면 절대 안될꺼같은데…

  • Jong-Geun Song

    크론

    Jong-Geun Song

    서버에 잡을 등록해 놓는 방법이죠!

    Chinseok Lee

    celery !

    임창민

    crontab에 대해 검색해보시면 찾아보실 수 있습니다.

    JongMan Koo

    Celery 쓰세요. 🙂

    남홍김

    celery 에서 celery beat를 쓰면 되요.

    Han Cold Kim

    셀러리 듣기만 해봤지… 이럴때 쓰는거군요! 감사합니다!

    Thomas Hyunsik Kim

    규모 있는 프로젝트면 셀러리 쓰시면 좋을 것 같고, 아니라면 크론잡으로 주기적인 스크립트 돌려도 괜찮을 것 같아요.

    Han Cold Kim

    그런데 크론탭으로 하는 경우엔 Thomas Hyunsik Kim님께서 말씀하신대로 주기적으로 스크립트를 돌리는 방식으로 알고있는데,

    그렇다면 제가 원하는 기능은 어떤 식으로 수행할수있는건가요…?

    db에 등록된 시간을 불러와서 그 시간 기준으로 어떤 코드를 실행해야하는데…

    이것과 크론탭이 적절하나요…?

    아… 셀러리도 크론탭과 같은 방식인가요…?

    JongMan Koo

    크론은 장고랑 상관없는 유닉스 유틸리티로, 임의의 스크립트나 프로그램을 수행할 수 있게 해 주죠. 따라서 해당 기능을 수행하는 manage.py 커맨드를 만들어서 실행하게 되고.. 셀러리의 경우에는 특정 함수에 데코레이터를 달아서 셀러리 태스크로 만들면 특정 시간에 해당 함수를 수행할 수 있도록 해줍니다. http://docs.celeryproject.org/en/latest/userguide/calling.html#eta-and-countdown

    JongMan Koo

    근데 사실 지금 말씀하신 사용례에서는 그냥 db에 다 넣어 놓고, 3시간이 되기 전에는 안보이도록 구현해도 되지 않나요? ㅋㅋ

    Han Cold Kim

    음 그 특정시점에 안드로이드로 push도 해야해서요…

    JongMan Koo

    그러면 셀러리가 정답일듯 하네요. ㅎㅎ

    Han Cold Kim

    감사합니다…

    Han Cold Kim

    근데 …. db에 넣어놓고 3시간 되기전에는 안보이도록 구현은 어떻게 하면될까요…? 잠시 생각해봤는데 안떠올라서…

    JongMan Koo

    뭐 그냥 effective_time 같은 필드를 추가해 놓고 view에서 쿼리할 때 effective_time이 현재 시간보다 작은 것들만 보이도록 하면 되겠죠?

    Han Cold Kim

    아 ㅋㅋㅋㅋ 아 그러면 되겠네요 ㅋㅋㅋ 간단한 방법이군요 ㅋㅋ

    Han Cold Kim

    김남홍님…! 질문있습니다… 지금 계속 살펴보고있긴한데요… 추천해주신 celery beat는 보니까 크론탭처럼 주기적인 작업이 필요할때 사용하는것같은데.. 그런용도가 맞나요…?

    남홍김

    김한기 네네 그런 용도 맞습니다.

Advertisements