Я начинаю использовать Celery в веб-приложении на основе Flask для запуска асинхронных задач на стороне сервера.
Несколько ресурсов получают подресурс '/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
, если задача все еще выполняется).
Идентификатор, который я возвращаю для действия, — это celery.result.AsyncResult.id
.
Безопасно ли это? Какие проблемы возникают при передаче идентификаторов задач Celery напрямую публике?
Если нет, есть ли рекомендуемый способ? Предпочтительно тот, который позволяет избежать явного отслеживания состояния задач.