【发布时间】:2021-05-12 20:44:09
【问题描述】:
我想每天运行一个 Django 视图,最好是在调用 API 并将数据保存在 ForeignKey 关系模型中的特定时间。我不能在 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')
scheduler.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)
我该怎么做?感谢我将获得的任何帮助
【问题讨论】:
-
所以重写不需要 user.id 或从数据库中获取用户 ID/ID 的函数
标签: python django scheduled-tasks apscheduler