When an image contains a huge config layer, processing time of such config layer and subsequent inserts of labels and other things might go over 30 seconds. When 30 second request time is reached, push of the manifest will fail. This also impacts environments where there is a small but significant latency on SQL queries: if there's a sufficient number of queries, cumulatively they could surpasss the 30 second request limit, failing the push.
Suggestion is to make gunicorn timeout configurable by user, the timeout can be increased in environments with high latencies for instance so that pushes of manifests are successful in the end.