호출까지는 됐고.. 디비 저장까지 해야되는데 아까 나온 오류를 해결 못하면 이거 못할거같다...
추측) AppConfig에서는 모델을 사용하는 코드를 못쓴다.
=> 맞았다!!!!
아무래도 서버 시작하자마자 실행되는 코드다 보니 모델을 기존 방식으로는 못쓰는거 같다. 제일 위가 아니라 ready
메소드 안에서 모델을 import해주니까 된다...
from django.apps import AppConfig
from .weather_api import check_weather
from apscheduler.schedulers.background import BackgroundScheduler
import time
from django.shortcuts import render, get_object_or_404
def job():
print(f'******{time.strftime("%H:%M:%S")}******')
print("************************")
def cron_weather():
sched = BackgroundScheduler()
sched.add_job(job, 'interval', seconds=10, id='cron_weather')
sched.start()
class WeatherConfig(AppConfig):
name = 'api'
verbose_name = "WeatherConfig"
def ready(self):
from .models import BemsBuilding, WeatherDB
building = get_object_or_404(BemsBuilding, pk=1)
data = check_weather()
weather = WeatherDB.objects.get(building=building)
weather.temp = data['tmp']
weather.humidity = data['hum']
weather.rainType = data['rain']
weather.sky = data['sky']
weather.save()
print(weather, weather.temp)
print("weather DB saved")