We need to be super careful when using save() inside post_save, they can lead to a recursive call. Here is one solution.
def profile_thumbanil(sender, created, instance , update_fields=["thumbnail_image"], **kwargs):
profile = UserProfile.objects.get(id = instance.id)
thumb = handlers.create_thumbanil(profile.image, profile.user_id)
profile.save(update_fields=["thumbnail_image"])
post_save.connect(profile_thumbanil, sender=UserProfile)
Internally this would use an update SQL command instead of insert.
UPDATE row
SET "thumbnail_image" = 'your image'
WHERE "row"."id" = pk
This will work for sure, however, the best practice would be to use save() method instead.