добавлен метод удаления строк в бд + настроен CORS на ip сайта
This commit is contained in:
54
main.py
54
main.py
@@ -39,7 +39,7 @@ wp.create_table()
|
|||||||
|
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
allow_origins=["*"], # или список разрешенных адресов, например ["http://localhost:8080"]
|
allow_origins=["http://localhost:5173", "http://45.129.78.228:8000"], # или список разрешенных адресов, например [""]
|
||||||
allow_credentials=True,
|
allow_credentials=True,
|
||||||
allow_methods=["*"],
|
allow_methods=["*"],
|
||||||
allow_headers=["*"],
|
allow_headers=["*"],
|
||||||
@@ -351,7 +351,28 @@ def start_pars_two_istochnik():
|
|||||||
|
|
||||||
wp.update_task(task_id, status='completed', finished_at=datetime.utcnow())
|
wp.update_task(task_id, status='completed', finished_at=datetime.utcnow())
|
||||||
|
|
||||||
|
# Функции для автоматического запуска
|
||||||
|
def scheduled_parser_1():
|
||||||
|
"""Планировщик для первого парсера"""
|
||||||
|
istochnik = "" # пустая строка = текущая дата
|
||||||
|
start_pars_one_istochnik(istochnik.split("."))
|
||||||
|
|
||||||
|
def scheduled_parser_2():
|
||||||
|
"""Планировщик для второго парсера"""
|
||||||
|
start_pars_two_istochnik()
|
||||||
|
|
||||||
|
@app.on_event("startup")
|
||||||
|
async def start_scheduler():
|
||||||
|
"""Запуск планировщика при старте приложения"""
|
||||||
|
scheduler.add_job(scheduled_parser_1, "cron", hour=10, minute=0)
|
||||||
|
scheduler.add_job(scheduled_parser_2, "cron", hour=11, minute=0)
|
||||||
|
|
||||||
|
scheduler.start()
|
||||||
|
|
||||||
|
@app.on_event("shutdown")
|
||||||
|
async def stop_scheduler():
|
||||||
|
"""Остановка планировщика при выключении"""
|
||||||
|
scheduler.shutdown()
|
||||||
|
|
||||||
class ParserOneRequest(BaseModel):
|
class ParserOneRequest(BaseModel):
|
||||||
time: str
|
time: str
|
||||||
@@ -382,34 +403,9 @@ def get_settings():
|
|||||||
def set_settings(settings: sw.Source):
|
def set_settings(settings: sw.Source):
|
||||||
return sw.update_source(settings)
|
return sw.update_source(settings)
|
||||||
|
|
||||||
# Функции для автоматического запуска
|
@app.delete("/delete_task/{task_id}", summary="Метод удаления задачи")
|
||||||
def scheduled_parser_1():
|
def delete_task(task_id: int):
|
||||||
"""Планировщик для первого парсера"""
|
return print(wp.delete_task(task_id))
|
||||||
print("Запуск планировщика парсера 1")
|
|
||||||
istochnik = "" # пустая строка = текущая дата
|
|
||||||
start_pars_one_istochnik(istochnik.split("."))
|
|
||||||
|
|
||||||
def scheduled_parser_2():
|
|
||||||
"""Планировщик для второго парсера"""
|
|
||||||
print("Запуск планировщика парсера 2")
|
|
||||||
start_pars_two_istochnik()
|
|
||||||
|
|
||||||
@app.on_event("startup")
|
|
||||||
async def start_scheduler():
|
|
||||||
"""Запуск планировщика при старте приложения"""
|
|
||||||
# Парсер 1 - каждый день в 6:00
|
|
||||||
scheduler.add_job(scheduled_parser_1, "cron", hour=10, minute=0)
|
|
||||||
|
|
||||||
# Парсер 2 - каждый день в 7:00
|
|
||||||
scheduler.add_job(scheduled_parser_2, "cron", hour=11, minute=0)
|
|
||||||
|
|
||||||
scheduler.start()
|
|
||||||
print("Планировщик запущен: парсер 1 в 6:00, парсер 2 в 7:00")
|
|
||||||
|
|
||||||
@app.on_event("shutdown")
|
|
||||||
async def stop_scheduler():
|
|
||||||
"""Остановка планировщика при выключении"""
|
|
||||||
scheduler.shutdown()
|
|
||||||
|
|
||||||
# if __name__ == "__main__":
|
# if __name__ == "__main__":
|
||||||
# uvicorn.run("main:app", port=8001, reload=True)
|
# uvicorn.run("main:app", port=8001, reload=True)
|
||||||
@@ -38,12 +38,6 @@ def insert_task(status, source_url=None, source_id=None, priority=0):
|
|||||||
task_id = cur.fetchone()[0]
|
task_id = cur.fetchone()[0]
|
||||||
return task_id
|
return task_id
|
||||||
|
|
||||||
def get_task(task_id):
|
|
||||||
with conn.cursor(cursor_factory=RealDictCursor) as cur:
|
|
||||||
cur.execute("SELECT * FROM work_parser WHERE id = %s;", (task_id,))
|
|
||||||
task = cur.fetchone()
|
|
||||||
return task
|
|
||||||
|
|
||||||
|
|
||||||
def get_tasks_offset(limit, offset):
|
def get_tasks_offset(limit, offset):
|
||||||
with conn.cursor(cursor_factory=RealDictCursor) as cur:
|
with conn.cursor(cursor_factory=RealDictCursor) as cur:
|
||||||
@@ -55,6 +49,14 @@ def get_tasks_offset(limit, offset):
|
|||||||
tasks = cur.fetchall()
|
tasks = cur.fetchall()
|
||||||
return tasks
|
return tasks
|
||||||
|
|
||||||
|
def delete_task(task_id: int):
|
||||||
|
with conn.cursor(cursor_factory=RealDictCursor) as cur:
|
||||||
|
cur.execute("DELETE FROM work_parser WHERE id = %s RETURNING *;", (task_id,))
|
||||||
|
deleted_task = cur.fetchone()
|
||||||
|
if deleted_task:
|
||||||
|
return {"message": f"Задача {task_id} удалена", "deleted_task": dict(deleted_task)}
|
||||||
|
else:
|
||||||
|
return {"message": f"Задача с id {task_id} не найдена"}
|
||||||
|
|
||||||
def update_task(task_id, **fields):
|
def update_task(task_id, **fields):
|
||||||
# dynamic update query generator
|
# dynamic update query generator
|
||||||
|
|||||||
Reference in New Issue
Block a user