【问题标题】:How to run Django APScheduler on a view function如何在视图函数上运行 Django APScheduler
【发布时间】: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


【解决方案1】:

您可以使用 Django-Celery 包。文档Here

【讨论】:

    猜你喜欢
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 2014-05-18
    • 2023-03-08
    • 2021-09-28
    • 2016-09-04
    • 1970-01-01
    相关资源
    最近更新 更多