Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-文件描述符可能泄漏?_Python_Django_Python 2.7_Multiprocessing_Lsof - Fatal编程技术网

Python Django-文件描述符可能泄漏?

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

我正在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 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个描述符。