如何在视图函数上运行 Django APScheduler

问题描述

我想每天最好在特定时间运行 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...