首页 > 解决方案 > DJANGO:如何在后台运行 API 请求,让我的用户不会遇到延迟?

问题描述

我有一个从 API 获取数据的脚本。API 需要一些时间来计算和返回值。

这意味着我的用户会经历很多延迟(9 秒)才能转到下一页,直到 API 返回值。

有没有办法在后台使用 API 运行脚本?所以用户可以毫无阻碍地继续他们的体验吗?(我想知道异步函数是否有帮助?)

我用来运行 API 的代码:

import requests            
body = {...}
headers = {
            'Accept': 'application/json, application/geo+json, application/gpx+xml, img/png; charset=utf-8',
            'Authorization': '...',
            'Content-Type': 'application/json; charset=utf-8'
        }

        call = requests.post('https://api....', json=body, headers=headers)

        print(call.status_code, call.reason)
        print(call.text)

更新:

对于那些不熟悉 celery 的人(比如我),快速更新我为使其正常工作所做的事情。

  1. 启动并运行 Redis 服务器:此链接说明了如何执行此操作。它来自 Digital Ocean,但我在 Hetzner 上使用了一个服务器,它运行得非常好。
  2. ...我会在继续进行时更新其余部分

标签: pythondjangopython-requests

解决方案


经典的方法是将任何长时间运行的任务发送给celery worker


推荐阅读