ThongCoder's picture
Upload 16 files
709c473 verified
import os
import threading
import time
from fastapi import FastAPI
from fastapi.responses import FileResponse, HTMLResponse, PlainTextResponse, StreamingResponse
from fastapi.staticfiles import StaticFiles
import uvicorn
from run import start_finder
app = FastAPI()
app.mount('/file/db', StaticFiles(directory='db/', html=False), '/file/db')
def tail_file(path):
with open(path, "r", encoding="utf-8") as f:
f.seek(0, os.SEEK_END) # start at EOF
while True:
line = f.readline()
if line:
yield f"data: {line.strip()}\n\n"
else:
time.sleep(1)
@app.get("/raw-pair")
def send_raw_pair():
with open('public/pair.txt') as f:
return PlainTextResponse(f.read())
@app.get("/live-pair")
def live_pairs():
with open('public/live-pairs.html') as f:
return HTMLResponse(f.read())
@app.get("/stream-pair")
def stream_pairs():
return StreamingResponse(tail_file('public/pair.txt'), media_type="text/event-stream")
@app.on_event('startup')
def start():
runner = threading.Thread(target=start_finder, daemon=True)
runner.start()
if __name__ == "__main__":
uvicorn.run(app, host='0.0.0.0', port=7860)