diff --git a/logs/2021-11-22_error.log b/logs/2021-11-22_error.log new file mode 100644 index 0000000..e69de29 diff --git a/main.py b/main.py index 8c2082c..51c35b9 100644 --- a/main.py +++ b/main.py @@ -69,7 +69,6 @@ async def root(request: Request): return {"message": "kajsk"} - # @app.post("/send-notification/{email}") # async def send_notification(request: Request, email: str, background_tasks: BackgroundTasks, q: str = Depends(get_query)): # redis_client = request.app.state.redis @@ -82,5 +81,5 @@ async def root(request: Request): if __name__ == '__main__': import uvicorn - uvicorn.run(app='main:app', host="127.0.0.1", - port=8010, reload=True, debug=True) + uvicorn.run(app='main:app', host="0.0.0.0", + port=8020, reload=True, debug=True) diff --git a/ops/imgsmall/route.py b/ops/imgsmall/route.py index 5990c71..23cf239 100644 --- a/ops/imgsmall/route.py +++ b/ops/imgsmall/route.py @@ -9,12 +9,15 @@ router = APIRouter() @router.get("/img") -async def get_img(request: Request, url: str) -> JSONResponse: - key = url[24:] +async def get_imgs(request: Request, keys: str) -> JSONResponse: redis_client = request.app.state.redis - values = await redis_client.get(key) + values = await redis_client.get(keys) + print(keys, values) if values: + print(f"get {keys}") return {"url": values} else: - vv = await get_img(key) + print(f"new down {keys}") + vv = await get_img(keys) + await redis_client.set(keys, vv) return {"url": vv} diff --git a/scripts/common/get_img.py b/scripts/common/get_img.py index 682bd3e..a040c92 100644 --- a/scripts/common/get_img.py +++ b/scripts/common/get_img.py @@ -1,40 +1,45 @@ import shutil +from pydantic.types import NoneBytes import requests from starlette.requests import Request import datetime import oss2 import os -async def get_img(request:Request,key:str)->bool: - url = f'http://imgsmall.dmzj.com/{key}' + +async def get_img(keys: str) -> bool: + print(f"get {keys}") + url = keys headers = {'Referer': 'https://www.dmzj.com/'} response = requests.get(url=url, headers=headers, stream=True) - name=key.split('/')[-1] - paths='/'.join(key.split('/')[:-1]) - project='imgsmall' - now=datetime.datetime.strftime(datetime.datetime.now(),"%Y%m%d%H%M%S") - local_filename=f"/tmp/{now}_{name}" + key = keys[24:] + if not key: + return None + name = key.split('/')[-1] + paths = '/'.join(key.split('/')[:-1]) + project = 'imgsmall' + now = datetime.datetime.strftime(datetime.datetime.now(), "%Y%m%d%H%M%S") + local_filename = f"/tmp/{now}_{name}" with open(local_filename, 'wb') as out_file: shutil.copyfileobj(response.raw, out_file) del response - remote_filename=f"{[project]}/{paths}/{name}" - await simple_upload(local_filename,remote_filename) - remote_url=f"https://h5games-al.kingsome.cn/{remote_filename}" - redis_client = request.app.state.redis - await redis_client.set(url,remote_url) - return remote_url - + remote_filename = f"{project}{paths}/{name}" + await simple_upload(local_filename, remote_filename) + remote_url = f"https://h5games-al.kingsome.cn/{remote_filename}" -async def simple_upload(local_filename,remote_filename): + return remote_url + + +async def simple_upload(local_filename, remote_filename): AccessKeyId = os.environ.get('ALI_ACCESS_KEY_ID') AccessKeySecret = os.environ.get('ALI_ACCESS_KEY_SECRET') Endpoint = 'oss-cn-shanghai.aliyuncs.com' BucketName = 'h5games-kingsome' auth = oss2.Auth(AccessKeyId, AccessKeySecret) bucket = oss2.Bucket(auth, Endpoint, BucketName) - bucket.put_object_from_file(remote_filename, local_filename) - + bucket.put_object_from_file(remote_filename, local_filename) -async def write_redis(request:Request,key,values): + +async def write_redis(request: Request, key, values): redis_client = request.app.state.redis - await redis_client.set(key,values) + await redis_client.set(key, values)