Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

minio_conn.py 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import os
  2. import time
  3. from minio import Minio
  4. from io import BytesIO
  5. from rag import settings
  6. from rag.settings import minio_logger
  7. from rag.utils import singleton
  8. @singleton
  9. class HuMinio(object):
  10. def __init__(self):
  11. self.conn = None
  12. self.__open__()
  13. def __open__(self):
  14. try:
  15. if self.conn:
  16. self.__close__()
  17. except Exception as e:
  18. pass
  19. try:
  20. self.conn = Minio(settings.MINIO["host"],
  21. access_key=settings.MINIO["user"],
  22. secret_key=settings.MINIO["password"],
  23. secure=False
  24. )
  25. except Exception as e:
  26. minio_logger.error(
  27. "Fail to connect %s " % settings.MINIO["host"] + str(e))
  28. def __close__(self):
  29. del self.conn
  30. self.conn = None
  31. def put(self, bucket, fnm, binary):
  32. for _ in range(10):
  33. try:
  34. if not self.conn.bucket_exists(bucket):
  35. self.conn.make_bucket(bucket)
  36. r = self.conn.put_object(bucket, fnm,
  37. BytesIO(binary),
  38. len(binary)
  39. )
  40. return r
  41. except Exception as e:
  42. minio_logger.error(f"Fail put {bucket}/{fnm}: " + str(e))
  43. self.__open__()
  44. time.sleep(1)
  45. def rm(self, bucket, fnm):
  46. try:
  47. self.conn.remove_object(bucket, fnm)
  48. except Exception as e:
  49. minio_logger.error(f"Fail rm {bucket}/{fnm}: " + str(e))
  50. def get(self, bucket, fnm):
  51. for _ in range(1):
  52. try:
  53. r = self.conn.get_object(bucket, fnm)
  54. return r.read()
  55. except Exception as e:
  56. minio_logger.error(f"fail get {bucket}/{fnm}: " + str(e))
  57. self.__open__()
  58. time.sleep(1)
  59. return
  60. def obj_exist(self, bucket, fnm):
  61. try:
  62. if self.conn.stat_object(bucket, fnm):return True
  63. return False
  64. except Exception as e:
  65. minio_logger.error(f"Fail put {bucket}/{fnm}: " + str(e))
  66. return False
  67. def get_presigned_url(self, bucket, fnm, expires):
  68. for _ in range(10):
  69. try:
  70. return self.conn.get_presigned_url("GET", bucket, fnm, expires)
  71. except Exception as e:
  72. minio_logger.error(f"fail get {bucket}/{fnm}: " + str(e))
  73. self.__open__()
  74. time.sleep(1)
  75. return
  76. MINIO = HuMinio()
  77. if __name__ == "__main__":
  78. conn = HuMinio()
  79. fnm = "/opt/home/kevinhu/docgpt/upload/13/11-408.jpg"
  80. from PIL import Image
  81. img = Image.open(fnm)
  82. buff = BytesIO()
  83. img.save(buff, format='JPEG')
  84. print(conn.put("test", "11-408.jpg", buff.getvalue()))
  85. bts = conn.get("test", "11-408.jpg")
  86. img = Image.open(BytesIO(bts))
  87. img.save("test.jpg")