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
if data.get("timestamp"):
        if sent_at:
            
            
            try:
                
                
                return parser.isoparse(now) + (parser.isoparse(data["timestamp"]) - parser.isoparse(sent_at))
            except TypeError as e:
                capture_exception(e)
        return parser.isoparse(data["timestamp"])
    now_datetime = parser.parse(now)
    if data.get("offset"):
        return now_datetime - relativedelta(microseconds=data["offset"] * 1000)
    return now_datetime
def handle_identify_or_alias(event: str, properties: dict, distinct_id: str, team_id: int) -> None:
    if event == "$create_alias":
        _alias(
            previous_distinct_id=properties["alias"], distinct_id=distinct_id, team_id=team_id,
        )
    elif event == "$identify":
        if properties.get("$anon_distinct_id"):
            _alias(
                previous_distinct_id=properties["$anon_distinct_id"], distinct_id=distinct_id, team_id=team_id,
            )
        if properties.get("$set"):
            _update_person_properties(team_id=team_id, distinct_id=distinct_id, properties=properties["$set"])
        _set_is_identified(team_id=team_id, distinct_id=distinct_id)
@shared_task(name="posthog.tasks.process_event.process_event", ignore_result=True)
def process_event(