Es sieht so aus, als ob urlsafe_b64encode einige Zeichen in der Base64-Kodierung ersetzt. Aus der Dokumentation:
Kodiert bytes-ähnliches Objekt s unter Verwendung des URL- und Dateisystem-sicheren Alphabets, das
-anstelle von+und_anstelle von/im Standard-Base64-Alphabet ersetzt und gibt die kodiertenbyteszurück. Das Ergebnis kann immer noch=enthalten.
Das bedeutet, dass das Ergebnis kein Standard-Base64 ist und nicht mit Discoures Dekodierung kompatibel ist.
Ich empfehle stattdessen die Verwendung der normalen b64encode-Funktion. Ihre HTTP-Bibliothek sollte sich bei Bedarf um das URL-Escaping kümmern.