I think that's completely dependent on your models and any pre/post
processing you're doing. I'd play around with various sizes and
benchmark how well they perform. Possibly use transactions to
guarantee the writes and if you reach a deadline, have a standard
error code response and define a "next step" for your users to follow.
On reads you could have the user retry or retry with a smaller size.
Again, I think there is no "magic" number, you just need to bench what
fits your application.