Spaces:
Runtime error
Runtime error
| import subprocess | |
| from fastapi import FastAPI, BackgroundTasks | |
| from pydantic import BaseModel | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from util.search_data import * | |
| from util.preprocessing import * | |
| from test_server import update_DB | |
| from apscheduler.schedulers.asyncio import AsyncIOScheduler | |
| from apscheduler.triggers.cron import CronTrigger | |
| logs = [] | |
| app = FastAPI() | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| scheduler = AsyncIOScheduler() | |
| async def run_test_server_script(): | |
| subprocess.run(["python3", "test_server.py"]) | |
| async def startup_event(): | |
| # λ§€μΌ 05μμ `test_server.py` μ€ν | |
| scheduler.add_job(run_test_server_script, CronTrigger(hour=5, minute=0)) | |
| scheduler.start() | |
| def save_log(text): | |
| global logs | |
| logs.append(text) | |
| app.add_event_handler("startup", startup_event) | |
| async def Hello_world(): | |
| save_log(f"GET hello world") | |
| return {"detail": "Hello World"} | |
| def open_log(): | |
| global logs | |
| if len(logs) > 10: | |
| logs = logs[-5:] | |
| return {"detail": "logs", "data":logs} | |
| async def word_filter(word: str): | |
| data = { | |
| "detail": "ok", | |
| "data" : { | |
| "market" : word_to_market_name(word), | |
| "product" : word_to_product_name(word) | |
| } | |
| } | |
| save_log(f"GET /word_filter/{word}") | |
| return data | |
| async def near_market(lat: float, lon: float): | |
| nearest_markets = find_nearest_markets(lat, lon) | |
| data={ | |
| "detail": "ok", | |
| "data" : nearest_markets | |
| } | |
| save_log(f"GET /near_market/{lat}/{lon}") | |
| return data | |
| async def get_market(marketname: str): | |
| if not check_word(marketname): | |
| return {"detail":"fail", "message":f"{marketname}λ μλͺ»λ μμ₯λͺ μ λλ€"} | |
| data = dict() | |
| index, place_name, dist = find_nearest_place(marketname) | |
| lat, lon = get_market_location(marketname) | |
| size, area, store_count = determine_market_size(marketname) | |
| congestion, explain = get_congestion_data(place_name, index) | |
| data={ | |
| "detail": "ok", | |
| "data":{ | |
| "μμ₯" : marketname, | |
| "μμΉ" : [lat, lon], | |
| "κ·λͺ¨" : size, | |
| "κ·λͺ¨ μ 보" : { | |
| "λ©΄μ " : area, | |
| "μ ν¬μ" : store_count | |
| }, | |
| "μ‘°ν" : f"{marketname}κ³Ό(μ) κ°μ₯ κ°κΉμ΄ μ‘°ν κ°λ₯ν μ₯μλ {place_name}μ λλ€.(거리λ {int(dist*100)/100}km)", | |
| "νΌμ‘λ" : congestion, | |
| "μ€λͺ " : explain, | |
| "μ΅μ κ°κ²©" : get_cheapest_products_this_month(marketname), | |
| 'text': "μ΅κ·Ό 2κ°μ λ΄ μ‘°μ¬λ μμΈ μ΄λ¦°λ°μ΄ν° κ΄μ₯μ μμΈμ μνν λμμΆμ°λ¬Ό κ°κ²© μ 보λ₯Ό λ°νμΌλ‘ κ³μ°λμμ΅λλ€." | |
| } | |
| } | |
| save_log(f"GET /market/{marketname}") | |
| return data | |
| async def get_market(product_name: str): | |
| if not check_product(product_name): | |
| return {"detail":"fail", "message":f"{product_name}λ μλͺ»λ μνλͺ μ λλ€"} | |
| monthly_prices = get_monthly_average_price(product_name) | |
| lowest_price_markets = get_lowest_price_markets(product_name) | |
| season_data = get_season_data_by_name(product_name) | |
| data={ | |
| "detail": "ok", | |
| "data":{ | |
| "μν" : product_name, | |
| "μ μ² μ 보" : season_data, | |
| "μ΅κ·Ό μμΈ" : monthly_prices[0], | |
| "μ°¨νΈ" : monthly_prices, | |
| "μ΅μ κ° μμ₯" : lowest_price_markets, | |
| 'text': "μ΅κ·Ό 2κ°μ λ΄ μ‘°μ¬λ μμΈ μ΄λ¦°λ°μ΄ν° κ΄μ₯μ μμΈμ μνν λμμΆμ°λ¬Ό κ°κ²© μ 보λ₯Ό λ°νμΌλ‘ κ³μ°λμμ΅λλ€." | |
| } | |
| } | |
| save_log(f"GET /product/{product_name}") | |
| return data |