我正在使用Django后台任务执行一些长时间运行的任务。后台任务从数据库中获取一些数据,然后 对其进行内部处理,每个任务需要1 GB的内存
任务正在以异步方式运行
当任何任务运行并完成其执行时,Django后台任务在完成执行后不会释放内存。导致Dameon吊舱内存问题。Django后台任务中内存资源的释放有什么解决方案吗? 例如
注意:可用资源是固定的。因此,我们需要一个解决任务的资源释放问题的方法。目前,当pod重新启动时,内存会被释放
这就是模块结构的样子
../bulk_file_operations/
├── apps.py
├── tasks.py
├── views.py
├── file_handler.py
任务。py
@background()
def my_task():
"""
a long-running task that takes time of 20-30 mins, which includes some DB interactions.
"""
process_data_n_download(model_queryset_object)
pass
文件\u handler.py
def process_data_n_download(queryset_object):
"""process this ORM object for file creation."""
pass
不能显式释放内存。您需要做的是确保不保留对对象的引用。然后它们将被垃圾收集,释放内存
就你而言
如果需要大型列表,通常需要重新组织代码,通常使用生成器/迭代器。这样,您根本不需要在内存中存储大量列表http://www.prasannatech.net/2009/07/introduction-python-generators.html
检查
django-background-tasks
应用程序的内部是否保留了任何引用。此外,还要检查代码。您可以使用del
关键字删除引用(如果有)相关问题 更多 >
编程相关推荐