I’ve been able to get Deferred.defer() working by Base64 encoding the serialized object stream for the task before queuing it. I think something in the task queue processing chain doesn’t handle raw binary data. I’ll post a link to the code once smarter folks than I have had a chance to discuss this and review it.
You can follow the discussion on the AppEngine forum.