So can I just shove data into the SPDR outside of an interrupt and have it send to the master?
Absolutely not, because the master
controls when data is sent. You may as well say "can I pick up the phone and talk into it, even before it rings?". Well you can, but no-one will hear.
Especially since an interrupt coming from the Pi is likely to flood the Arduino with so many interrupts it locks up and I don't get any data off of my sensors (been there, done that).
Why would that happen? Are you designing both ends of this?
Get the Pi to query the Arduino for something, and get a response back.
eg. Using code as if both ends were Arduinos because I don't know the Pi syntax:
SPI.transfer (1); // give me temperature
byte lowTemp = SPI.transfer (0); // receive low byte
byte highTemp = SPI.transfer (0); // receive high byte
int temperature = (highTemp << 8) | lowTemp;
Repeat for other sensors.
The second and third transfer just send 0 (in effect, a no-op) because you have to transfer something
, to get something back.