Spaces:
Paused
Paused
| import os | |
| import time | |
| from minio import Minio | |
| from io import BytesIO | |
| from rag import settings | |
| from rag.settings import minio_logger | |
| from rag.utils import singleton | |
| class RAGFlowMinio(object): | |
| def __init__(self): | |
| self.conn = None | |
| self.__open__() | |
| def __open__(self): | |
| try: | |
| if self.conn: | |
| self.__close__() | |
| except Exception as e: | |
| pass | |
| try: | |
| self.conn = Minio(settings.MINIO["host"], | |
| access_key=settings.MINIO["user"], | |
| secret_key=settings.MINIO["password"], | |
| secure=False | |
| ) | |
| except Exception as e: | |
| minio_logger.error( | |
| "Fail to connect %s " % settings.MINIO["host"] + str(e)) | |
| def __close__(self): | |
| del self.conn | |
| self.conn = None | |
| def health(self): | |
| bucket, fnm, binary = "txtxtxtxt1", "txtxtxtxt1", b"_t@@@1" | |
| if not self.conn.bucket_exists(bucket): | |
| self.conn.make_bucket(bucket) | |
| r = self.conn.put_object(bucket, fnm, | |
| BytesIO(binary), | |
| len(binary) | |
| ) | |
| return r | |
| def put(self, bucket, fnm, binary): | |
| for _ in range(3): | |
| try: | |
| if not self.conn.bucket_exists(bucket): | |
| self.conn.make_bucket(bucket) | |
| r = self.conn.put_object(bucket, fnm, | |
| BytesIO(binary), | |
| len(binary) | |
| ) | |
| return r | |
| except Exception as e: | |
| minio_logger.error(f"Fail put {bucket}/{fnm}: " + str(e)) | |
| self.__open__() | |
| time.sleep(1) | |
| def rm(self, bucket, fnm): | |
| try: | |
| self.conn.remove_object(bucket, fnm) | |
| except Exception as e: | |
| minio_logger.error(f"Fail rm {bucket}/{fnm}: " + str(e)) | |
| def get(self, bucket, fnm): | |
| for _ in range(1): | |
| try: | |
| r = self.conn.get_object(bucket, fnm) | |
| return r.read() | |
| except Exception as e: | |
| minio_logger.error(f"fail get {bucket}/{fnm}: " + str(e)) | |
| self.__open__() | |
| time.sleep(1) | |
| return | |
| def obj_exist(self, bucket, fnm): | |
| try: | |
| if self.conn.stat_object(bucket, fnm):return True | |
| return False | |
| except Exception as e: | |
| minio_logger.error(f"Fail put {bucket}/{fnm}: " + str(e)) | |
| return False | |
| def get_presigned_url(self, bucket, fnm, expires): | |
| for _ in range(10): | |
| try: | |
| return self.conn.get_presigned_url("GET", bucket, fnm, expires) | |
| except Exception as e: | |
| minio_logger.error(f"fail get {bucket}/{fnm}: " + str(e)) | |
| self.__open__() | |
| time.sleep(1) | |
| return | |
| MINIO = RAGFlowMinio() | |
| if __name__ == "__main__": | |
| conn = RAGFlowMinio() | |
| fnm = "/opt/home/kevinhu/docgpt/upload/13/11-408.jpg" | |
| from PIL import Image | |
| img = Image.open(fnm) | |
| buff = BytesIO() | |
| img.save(buff, format='JPEG') | |
| print(conn.put("test", "11-408.jpg", buff.getvalue())) | |
| bts = conn.get("test", "11-408.jpg") | |
| img = Image.open(BytesIO(bts)) | |
| img.save("test.jpg") | |