Загрузка...

An error in the payment

Thread in Python created by cerdicor Feb 21, 2025. 115 views

  1. cerdicor
    cerdicor Topic starter Feb 21, 2025 guest тебя ищут > https://lolz.live/threads/8289159/ 3454 May 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 Feb 21, 2025 marlboro country 725 Jan 18, 2020
    информативненько
     
  3. YWCN8QBV7R
    YWCN8QBV7R Feb 21, 2025 2 Jan 17, 2024
    скинь код
     
    1. cerdicor Topic starter
  4. Genxus
    Genxus Feb 21, 2025 https://lolz.live/threads/8945240/ <- поиск поставщика симок 1273 Feb 11, 2024
    проверь есть ли человек в базе данных
     
  5. Клементина
    Клементина Feb 21, 2025 Нейросети наше всё! 32 Jan 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
Loading...