【发布时间】:2015-02-04 15:35:28
【问题描述】:
我有以下代码(简化版)
for data in my_data_array:
res = api_request(data)
#write result to db
这些请求可能需要一些时间,而且数量很多。如何使循环的每次迭代异步并使用 Django 将已完成请求百分比的进度发送到前端。 如果我必须使用 Tornado 或 Celery,请给我链接,其中包含如何将 Django 与它们集成的信息。
【问题讨论】:
-
你是怎么解决这个问题的?
-
@bryanph ,我有 Redis 缓存,对于每个任务我都有 [task_id]_total 和 [task_id]_completed 键。每个请求(Celery 任务)在完成时都会增加值
cache.incr(key, 1)。而且我还有 download_progress() 视图函数,它返回compl = cache.get(key_compl), total = cache.get(key_total), compl/total。与答案中的方法相同
标签: python django api asynchronous tornado