After a client uploads documentation to LTD’s S3 bucket, they must do a PATCH /builds/<id> call to tell the API that the build is complete. When this happens, the LTD Keeper app determines if the new build corresponds to an edition. If so, it copies the build over to become the new edition in the S3 bucket. For large sites, this takes a significant amount of time since actual data is being copied in the S3 bucket. The result is that the PATCH call routinely times out and produces a 503 server error.
The solution is to make this post processes asynchronous with the client API handling. Being a Flask app, we already have experience using Celery in Kubernetes to implement asynchronous tasks.
The goal of this ticket is:
- Add celery to LTD Keeper and its Kubernetes deployment
- Refactor the edition update into a Celery task.