posthog-js supports person.set_once but our backend doesn't. Make sure we can pass through `$set_once` on an `$identify` call, and only set the properties within if the properties aren't already set on the user.
posthog/tasks/process_event.py
"slack_incoming_webhook",
        "event_names",
        "event_properties",
        "event_names_with_usage",
        "event_properties_with_usage",
        "anonymize_ips",
        "ingested_event",
    ).get(pk=team_id)
    if not team.anonymize_ips and "$ip" not in properties:
        properties["$ip"] = ip
    event = sanitize_event_name(event)
    _add_missing_feature_flags(properties, team, distinct_id)
    Event.objects.create(
        event=event,
        distinct_id=distinct_id,
        properties=properties,
        team=team,
        site_url=site_url,
        **({"timestamp": timestamp} if timestamp else {}),
        **({"elements": elements_list} if elements_list else {})
    )
    store_names_and_properties(team=team, event=event, properties=properties)
    if not Person.objects.distinct_ids_exist(team_id=team_id, distinct_ids=[str(distinct_id)]):
        
        
        try:
            Person.objects.create(team_id=team_id, distinct_ids=[str(distinct_id)])
        except IntegrityError:
            pass
def get_or_create_person(team_id: int, distinct_id: str) -> Tuple[Person, bool]: