Django 对远程的异步请求 api
Django asynchronous requests to remote api
我有以下代码(简化版)
for data in my_data_array:
res = api_request(data)
#write result to db
这些请求可能需要一些时间,而且数量很多。如何使循环的每次迭代异步并使用 Django 将进度和已完成请求的百分比发送到前端。
如果我必须使用 Tornado 或 Celery,请给我有关如何将 Django 与它们集成的信息的链接。
您将需要 Celery(或其他异步任务队列)。要将其与 Django 集成,请参阅 http://celery.readthedocs.org/en/latest/django/first-steps-with-django.html。我推荐使用 Celery 和 Redis,因为 Redis 经常被用作缓存,所以你不需要为 Celery 安装另一个后端(主要是 RabbitMQ)。
要获取进度条,计算任务总数(len(my_data_array)
),将值存储在缓存中(例如键total_count)并添加第二个键(例如complete_count ) 为零值。在每个完成的任务中,增加 complete_count 值。
最后一步是查询状态。这只是一个简单的视图,将这两个值从缓存和 returns 加载到用户 (html/json).
我有以下代码(简化版)
for data in my_data_array:
res = api_request(data)
#write result to db
这些请求可能需要一些时间,而且数量很多。如何使循环的每次迭代异步并使用 Django 将进度和已完成请求的百分比发送到前端。 如果我必须使用 Tornado 或 Celery,请给我有关如何将 Django 与它们集成的信息的链接。
您将需要 Celery(或其他异步任务队列)。要将其与 Django 集成,请参阅 http://celery.readthedocs.org/en/latest/django/first-steps-with-django.html。我推荐使用 Celery 和 Redis,因为 Redis 经常被用作缓存,所以你不需要为 Celery 安装另一个后端(主要是 RabbitMQ)。
要获取进度条,计算任务总数(len(my_data_array)
),将值存储在缓存中(例如键total_count)并添加第二个键(例如complete_count ) 为零值。在每个完成的任务中,增加 complete_count 值。
最后一步是查询状态。这只是一个简单的视图,将这两个值从缓存和 returns 加载到用户 (html/json).