【发布时间】:2016-08-25 09:27:53
【问题描述】:
我开始在基于 Flask 的 Web 应用程序中使用 Celery 在服务器端运行异步任务。
一些资源获得一个“/action”子资源,用户/客户端可以向该子资源发送一个 POST,其中包括一个指定操作的 JSON 正文,例如:
curl -H "Content-Type: application/json" -X POST \
-d '{"doPostprocessing": { "update": true}}}' \
"http://localhost:5000/api/results/123/action"
他们收到带有标题的202 ACCEPTED 响应
Location: http://localhost:5000/api/results/123/action/8c742418-4ade-474f-8c54-55deed09b9e5
他们可以轮询以获得最终结果(如果任务仍在运行,则可以获取另一个 202 ACCEPTED)。
我为该操作返回的 ID 是 celery.result.AsyncResult.id。
这样做安全吗?将 Celery 任务 ID 直接传递给公众时会产生什么样的问题?
如果没有,有推荐的方法吗?最好是避免必须显式跟踪任务状态的一种。
【问题讨论】:
标签: celery celery-task