python - 从 Django 项目实现对外部 API 的异步请求?
问题描述
在我的 Django 项目中,我必须实现对外部 API 的异步 HTTP 请求并获取结果。我发现通过使用 Django 频道和 celery 我们可以做到。龙卷风 simpleAsynchronousHttp 包中有一个包 Django 中有什么。拜托,谁能建议实现对外部 API 的异步 HTTP 调用并在 Django 中获取数据的更好方法?
解决方案
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()
推荐阅读
- git - 使用 CloudFormation 在 CodeCommit 存储库中上传/创建文件
- spring-cloud-dataflow - 如何在 Spring Cloud 数据流上使用自定义处理器?
- git - 我可以快进将整个分支链合并到 master 中吗?
- tensorflow - Tensorflow LSTM 中辍学的种子 - model(X) 和 model.predict(X) 的差异
- bootstrap-4 - 为什么列表组不占用列的全宽
- c - How do I fix these memory leaks in C?
- jquery - 如何根据页面(URL)选择选项?
- api - Asp.net core API method is called on fluent api validation failed
- c# - 为什么 LinkGenerator.GetUriByPage() "values" 参数在传入字符串时返回 string.Length?
- sorting - 通过查询仅检索唯一值