Python Django-文件描述符可能泄漏?
我正在Django中开发应用程序,在这里我想使用多处理来执行有效的计算,但不知何故python/Django会将文件描述符打开到本地数据库,而在这之后会出现错误 在models.py文件中,我有一个类:Python Django-文件描述符可能泄漏?,python,django,python-2.7,multiprocessing,lsof,Python,Django,Python 2.7,Multiprocessing,Lsof,我正在Django中开发应用程序,在这里我想使用多处理来执行有效的计算,但不知何故python/Django会将文件描述符打开到本地数据库,而在这之后会出现错误 在models.py文件中,我有一个类: class VM(models.Model): name = models.CharField(max_length=30, primary_key=True) status = models.CharField(max_length=10) 在第二个文件中,我得到: from
class VM(models.Model):
name = models.CharField(max_length=30, primary_key=True)
status = models.CharField(max_length=10)
在第二个文件中,我得到:
from multiprocessing.dummy import Pool as ThreadPool
from myapp.models import VM
def multi(vm):
summary = vm.summary
state = summary.runtime.powerState
vm_name = summary.config.name
p=VM(name=vm_name, status = state)
p.save()
方法save()是内置的Django.models方法,用于在db中插入行,我认为它可以向db打开文件描述符
def my_function():
x=0
while(x<100):
pool = ThreadPool(3)
pool.map(multi, vms)
pool.close()
pool.join()
x=x+1
sleep(1)`
def my_函数():
x=0
虽然(X从异步处理的web请求中同步生成线程不是一个好主意。您的问题证明了这一点。通常,您将计算任务交给一个单独的工作程序,有类似芹菜这样的系统。好的,我找到了一个解决方法。我创建了一个类my_vm,并将my_函数中的所有内容粘贴到该类中。我还从django.db import connection导入,在创建vm_class I的对象之前插入行:connection.close()
。现在我最多有3个描述符。从异步处理的web请求中同步生成线程不是一个好主意。您的问题证明了这一点。一般来说,您将计算任务交给一个单独的工作者,有类似芹菜这样的系统。好的,我找到了一个解决方法。我创建了一个类my_vm并粘贴到那里my_函数中的所有内容。也从django.db import connection导入了,在创建vm_类的对象之前,我插入了一行:connection.close()
。现在我最多有3个描述符。从异步处理的web请求中同步生成线程不是一个好主意。您的问题证明了这一点。一般来说,您将计算任务交给一个单独的工作者,有类似芹菜这样的系统。好的,我找到了一个解决方法。我创建了一个类my_vm并粘贴到那里my_函数中的所有内容。也从django.db import connection导入了,在创建vm_类对象之前,我插入了一行:connection.close()
。现在我最多有3个描述符。