jm_p_op

django 대신러닝 기능- scheduler(주기적반복) 본문

팀/대신러닝

django 대신러닝 기능- scheduler(주기적반복)

jm_p_op 2023. 5. 24. 21:56

 

사용 목적 - 외부 token을 필요할때마다 새롭게 받지 말고 바뀔 시간때마다 바꾸기

1시간마다 토큰이 리셋되므로 59분마다 새로고침하기

번외 사용방법 - 하루 한번 DB업데이트하기, 이메일 보내기 등등 사용방법은 많다


cmd: pip install APScheduler

views.py

from apscheduler.schedulers.background import BackgroundScheduler
access_token=""


def get_token():
    global access_token
    auth_url = 'https://accounts.spotify.com/api/token'
    message = f"{client_id}:{client_pw}"
    message_bytes = message.encode('ascii')
    base64_bytes = base64.b64encode(message_bytes)
    base64_message = base64_bytes.decode('ascii')
    header = {'Authorization': f"Basic {base64_message}"}
    data = {'grant_type': 'client_credentials'}
    res = requests.post(auth_url, headers=header, data=data)
    response_object = res.json()
    access_token = response_object['access_token']


get_token()
scheduler = BackgroundScheduler()
scheduler.add_job(get_token, 'interval', minutes=59)
scheduler.start()

1.시작하자마자 get_token 돌리고 그후 시간될때마다 돌린다.

2.access_token을 전역변수로 만들어 줌으로 다른 class함수에서도 바뀌게 한다.

 

3. scheduler.add_job(실행함수,'조건',시간)

  • 조건
    • interval - 실행후 시간만큼후에 다시 돌리기
    • cron - 매일 그 시간에 실행 (ex: 오후 11시 반에 실행)