问题描述
我想每天最好在特定时间运行 Django 视图,该视图调用 API 并将数据保存在外键关系模型中。我不能在 python 中使用 schedule 包,因为它需要无限循环,不能与 Web 服务器一起运行。 Django APScheduler 看起来像一个优雅的解决方案,尽管问题是视图函数将请求作为参数传递给 APScheduler,我需要使用用户的 id 保存数据,因此出现名称错误
views.py
def sync_data():
api_url = ""
access_token = RefreshToken.response
headers = {
'Authorization': 'Bearer {}'.format(access_token),'Content-Type': 'application/json;encoding=utf-8',}
user_id = request.user.id
response = requests.post(api_url,data=json.dumps(body),headers=headers)
r = response.json()
s = Model(user=request.user,starttime = startdate,endtime = endate,field = i['value'][0])
s.save()
return redirect('app:dash')
调度程序.py
from .views import sync_data
def start():
scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(),"default")
# run this job every 24 hours
scheduler.add_job(sync_data,'interval',hours=24,name='sync_daily_data',jobstore='default')
register_events(scheduler)
scheduler.start()
print("Scheduler started...",file=sys.stdout)
我该怎么做?感谢我得到的任何帮助
解决方法
您可以使用 Django-Celery 包。文档Here