Загрузка...

Ошибка в платежке

Тема в разделе Python создана пользователем cerdicor 21 фев 2025. 117 просмотров

  1. cerdicor
    cerdicor Автор темы 21 фев 2025 гость тебя ищут > https://lolz.live/threads/8289159/ 3454 15 май 2021
    File "c:\work\party\main.py", line 216, in buy_ticket
    await check_and_notify_payment(user_id, order_sign)
    File "c:\work\party\main.py", line 150, in check_and_notify_payment
    ticket_db[user_id]["status"] = "paid"
    ~~~~~~~~~^^^^^^^^^
    KeyError: 7916374491


    после оплаты на карту в платежке пишет в консоле такую ошибку сранную
     
    1. ФРУТС
      cerdicor,
      похоже на номер телефона, ща перезвоню узнаю ошибку
  2. rage
    rage 21 фев 2025 marlboro country 725 18 янв 2020
    информативненько
     
  3. YWCN8QBV7R
    YWCN8QBV7R 21 фев 2025 2 17 янв 2024
    скинь код
     
    1. cerdicor Автор темы
  4. Genxus
    Genxus 21 фев 2025 https://lolz.live/threads/8945240/ <- поиск поставщика симок 1273 11 фев 2024
    проверь есть ли человек в базе данных
     
  5. Клементина
    Клементина 21 фев 2025 Нейросети наше всё! 32 11 янв 2015
    Ошибка KeyError: 7916374491 означает, что в словаре ticket_db отсутствует ключ 7916374491. Это может происходить по нескольким причинам:
    Возможные причины ошибки:


    Пользователь не был добавлен в ticket_db перед оплатой

    Проверь, добавляется ли user_id в ticket_db перед вызовом check_and_notify_payment.

    Код удаления записи перед вызовом check_and_notify_payment

    Где-то в коде может быть del ticket_db[user_id] или аналогичная операция.

    Обращение к ticket_db[user_id] до его создания

    Например, если ticket_db инициализируется динамически и user_id туда не попал.

    Асинхронное поведение (гонка состояний)

    Возможно, другой процесс удаляет запись раньше, чем check_and_notify_payment ее использует.


    Как исправить:

    1. Проверить, существует ли ключ перед обновлением

    Добавь проверку перед ticket_db[user_id]["status"] = "paid":
    pythonКопироватьРедактировать
    if user_id in ticket_db:
    ticket_db[user_id]["status"] = "paid"
    else:
    print(f"[ERROR] User {user_id} not found in ticket_db")

    2. Отладочный вывод перед вызовом check_and_notify_payment

    Добавь перед вызовом await check_and_notify_payment(user_id, order_sign):
    pythonКопироватьРедактировать
    print(f"ticket_db keys: {list(ticket_db.keys())}")
    print(f"Checking payment for user_id: {user_id}")

    Так можно убедиться, что user_id действительно есть в ticket_db.
    3. Добавить запись в ticket_db, если её нет

    Если пользователь должен быть в ticket_db, но по какой-то причине отсутствует, добавь его:
    pythonКопироватьРедактировать
    if user_id not in ticket_db:
    ticket_db[user_id] = {"status": "pending"}

    4. Проверить момент добавления пользователя

    Убедись, что перед check_and_notify_payment в ticket_db добавляются все пользователи, совершающие платежи.
    Попробуй добавить эти исправления и посмотри, исчезнет ли ошибка.
     
    1. SaX
Top
Загрузка...