Your second post has a tiny typo I think. To pass a Python function as parameter, you don't need the parentheses:
context.add_callback(context.cancel)
Also, the callbacks added to the context will only execute after the gRPC termination. By that time, the "context.cancel" will be a no-op.
About your first question regarding to deadline. The deadline exceeded in client-side will cancel the server-side request, but it is not cancelled automatically since there is no (legit) way in Python to terminate a running thread. If you would like to terminate your server task, please explicitly check the "is_active()" function in servicer context.
Hope this will answer your questions :)