The code handling SIGINT can't know in advance whether there are outstanding items in the buffer, but a 500ms sleep should be sufficient to allow the client's BatchPersister to do the final POST before shutting down.
With the batching code moved into the client and the client supporting "final flush" behavior, this should be sufficient to handle #11.