Обновление модели Django после сохранения и 5-секундного сна дает мне старое состояние, что не так?

Я смог сохранить данные в Django модель без каких-либо ошибок, но данные не отразились в db. Но через некоторое время я смог сохранить данные снова с помощью того же метода. Что может быть причиной этого?

Я подозреваю использование Google API, но смог распечатать данные перед выполнением операции сохранения.

def update_channel():
    client = Client.objects.get(name="name")
    print(f"Existing channel: {data['id']}")             # 123

    # fetch channel data from google api
    data = google_drive.subscribe_new_channel()

    client.channel_id = data["id"]
    client.channel_resource_id = data["resourceId"]
    client.save()

    client.refresh_from_db()
    print(f"New channel: {data['id']}")                  # 456 
    print(f"New channel in db: {client.channel_id}")     # 456

    time.sleep(5)
    client.refresh_from_db()                         
    print(f"channel in db: {client.channel_id}") # 123

Вывод образца:

Existing channel: 123
New channel: 456
New channel in db: 456 
channel in db: 123

Это может произойти, если другой процесс уже извлек тот же объект клиента и сохранил его после вашей операции сохранения.

В этом случае данные во втором процессе все еще будут старыми и перезапишут ваше изменение при сохранении.

попробуйте использовать celery здесь Документация по Celery:- https://docs.celeryq.dev/en/stable/django/first-steps-with-django.html

Вернуться на верх