Ok, quindi ho spostato l'importazione in views.py (o models.py e mentre veniva importato solo una volta, veniva chiamato due volte.
Il problema era che il post_save il segnale veniva chiamato quando l'oggetto è stato creato e salvato. Non ho idea del perché, quindi ho aggiunto una soluzione alternativa che ora funziona
created = False
#Workaround to signal being emitted twice on create and save
if 'created' in kwargs:
if kwargs['created']:
created=True
#If signal is from object creation, return
if created:
return
Modifica:
post_save è stato chiamato due volte perché ho usato .create(...) che equivale a __init__(...) e .save() .
Conclusione
dispatch_uid funziona e fare singole importazioni è ancora una buona pratica.