Levin-Aleksey commited on
Commit
76d7dae
·
1 Parent(s): a2f44be

Initial commit

Browse files
Files changed (2) hide show
  1. app.py +7 -3
  2. database.py +14 -13
app.py CHANGED
@@ -4,10 +4,14 @@ from database import init_storage
4
 
5
  @cl.on_chat_start
6
  async def start():
7
- # Инициализируем таблицы в БД при старте
8
- init_storage()
 
 
 
 
9
  cl.user_session.set("thread_id", cl.user_session.get("id"))
10
- await cl.Message(content="Привет! Я твой аналитик WB. База подключена, контекст сохраняется.").send()
11
 
12
  @cl.on_message
13
  async def main(message: cl.Message):
 
4
 
5
  @cl.on_chat_start
6
  async def start():
7
+ try:
8
+ # Добавили await!
9
+ await init_storage()
10
+ except Exception as e:
11
+ print(f"Ошибка при создании таблиц памяти: {e}")
12
+
13
  cl.user_session.set("thread_id", cl.user_session.get("id"))
14
+ await cl.Message(content="Система запущена.").send()
15
 
16
  @cl.on_message
17
  async def main(message: cl.Message):
database.py CHANGED
@@ -1,18 +1,19 @@
1
  import os
2
- from langgraph.checkpoint.postgres import PostgresSaver
3
- from psycopg_pool import ConnectionPool
4
 
5
- # Используем проверенную строку (лучше через переменные окружения)
6
- DB_URI = os.getenv("DATABASE_URL", "postgresql://postgres.fdkvbrxnmsfctzoaewtn:pulXdHRsYb6ff2gO@aws-1-eu-west-1.pooler.supabase.com:6543/postgres?sslmode=require")
7
 
8
- # Пул соединений для высокой нагрузки
9
- pool = ConnectionPool(conninfo=DB_URI, max_size=20, kwargs={"autocommit": True})
10
 
11
- # Объект для сохранения состояния графа
12
- checkpointer = PostgresSaver(pool)
13
 
14
- # Функция для первой инициализации таблиц (запустить один раз)
15
- def init_storage():
16
- # Чекпоинтер сам возьмет коннект из пула, ничего передавать не нужно
17
- checkpointer.setup()
18
- print("✅ Хранилище контекста в Supabase готово.")
 
 
 
 
1
  import os
2
+ from langgraph.checkpoint.postgres.aio import AsyncPostgresSaver
3
+ from psycopg_pool import AsyncConnectionPool
4
 
 
 
5
 
6
+ # Используем новое имя переменной, чтобы Chainlit не путался!
7
+ DB_URI = os.getenv("SUPABASE_URL", "postgresql://postgres.fdkvbrxnmsfctzoaewtn:pulXdHRsYb6ff2gO@aws-1-eu-west-1.pooler.supabase.com:6543/postgres?sslmode=require")
8
 
9
+ # АСИНХРОННЫЙ пул соединений
10
+ pool = AsyncConnectionPool(conninfo=DB_URI, max_size=20, kwargs={"autocommit": True})
11
 
12
+ # АСИНХРОННЫЙ объект для сохранения состояния графа
13
+ checkpointer = AsyncPostgresSaver(pool)
14
+
15
+ # Асинхронная инициализация
16
+ async def init_storage():
17
+ # Теперь мы просто вызываем setup(), чекпоинтер сам возьмет коннект из пула
18
+ await checkpointer.setup()
19
+ print("✅ Асинхронное хранилище контекста в Supabase готово.")