首页 > 解决方案 > 从 Django 项目实现对外部 API 的异步请求?

问题描述

在我的 Django 项目中,我必须实现对外部 API 的异步 HTTP 请求并获取结果。我发现通过使用 Django 频道和 celery 我们可以做到。龙卷风 simpleAsynchronousHttp 包中有一个包 Django 中有什么。拜托,谁能建议实现对外部 API 的异步 HTTP 调用并在 Django 中获取数据的更好方法?

标签: pythondjangoasynchronous

解决方案


Requests 是一个 python 包,它可以很容易地执行 HTTP 请求。为了异步执行此操作,您可以利用Celery。对于 celery 设置,您可以按照文档进行操作。您可以使用redis作为代理。

在您的应用程序中创建一个任务。

# proj/tasks.py
from __future__ import absolute_import, unicode_literals
from .celery import app
import requests # https://github.com/requests/requests


@app.task
def call_api():
    r = requests.get('https://api.github.com/events')

在文件中您要调用函数的任何位置,例如在您的视图中

# proj/views.py
from tasks import call_api
call_api.delay()

推荐阅读