Mostly fixes #364. Ideally we would also interrupt any running transfers since those could be exceptionally long running and wasteful, but doing so requires interrupting a thread running a non-looping action.
We are probably better off moving those to more properly managed asynchronous tasks (celery, multiprocessing, etc.).
EDIT: Also fixes #353, although not by caring whether it's a 403.
Mostly fixes #364. Ideally we would also interrupt any running transfers since those could be exceptionally long running and wasteful, but doing so requires interrupting a thread running a non-looping action.
We are probably better off moving those to more properly managed asynchronous tasks (celery, multiprocessing, etc.).
EDIT: Also fixes #353, although not by caring whether it's a 403.