import shutil 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}' 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}" 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 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) async def write_redis(request:Request,key,values): redis_client = request.app.state.redis await redis_client.set(key,values)