运行执行Python脚本的容器时发生内存异常,但是我没有看到任何内存泄漏

问题描述

仅从SFTP位置下载5k文件并读取文件并将数据加载到数据库的Python脚本 执行步骤如下所示 SFTP连接 获取要处理的文件列表 一个接一个地迭代 一种。下载一个文件 b。读取档案 C。将数据加载到数据库 d。删除档案 (对所有文件重复步骤3)

在代码级别,我看不到任何内存泄漏。但是我的容器退出并出现内存错误。 如果我在本地计算机上运行并检查容器统计信息,则会看到它要求70mb的空间来处理单个文件(以存储临时数据等)。当处理文件2时,它大约要再请求70mb,而不会释放先前的非活动内存。

我阅读了一些有关Python GC的内容,看起来,与许多其他语言不同,Python GC不会将内存返回给操作系统,而是会返回到其内部内存分配器。关于如何克服这个问题的任何想法

def batch_load(self):
    logging.info("SFTP to DB")
    logging.info("SFTP Operations")
    files = self.sftp_src_strategy.list_contents()
    for file in files:
        exec_date = file.split('.')[0][-8:]
        execution_date = f'{str(exec_date[:4])}-{str(exec_date[4:6])}-{str(exec_date[6:8])}'
        header_row,data = self.sftp_src_strategy.download_data(execution_date,exec_date,file)
        logging.info("Sftp Download Success + Data extracted from file")
        logging.info("DB Operations")
        self.db_des_strategy.load_data(execution_date,header_row,data)
        logging.info("Data moved to db from SFTP file successfully")

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)