The Python REST API sample has a "chunking/multipart method" for uploading larger items - have you tried using this?
I'm not 100% sure the point where it starts to fail - but it is worth a shot!
The workbooks i am testing are less than 5MB. (example live workbooks) So i am not going into the chunky method yet.
Although when i print the content_type, i get this -
Content type--- multipart/mixed; boundary=6d2f464432364603ab5e1189596107df
I hope "multipart" is normal even though i am not using publish_with_chunk