Обновление модели 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