Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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 烧瓶+;uwsgi&x2B;nginx:什么时候释放内存?_Python_Nginx_Flask_Uwsgi_Flask Sqlalchemy - Fatal编程技术网

Python 烧瓶+;uwsgi&x2B;nginx:什么时候释放内存?

Python 烧瓶+;uwsgi&x2B;nginx:什么时候释放内存?,python,nginx,flask,uwsgi,flask-sqlalchemy,Python,Nginx,Flask,Uwsgi,Flask Sqlalchemy,我正在用烧瓶构建API 例如,如果我有这样一条烧瓶路线: @app.route('/api/tasks', methods=['GET']) @auth.login_required def tasks(): tasks = g.user.tasks task_list = [] for t in tasks: d = {} d['name'] = t.name d['id'] = t.id task_lis

我正在用烧瓶构建API

例如,如果我有这样一条烧瓶路线:

@app.route('/api/tasks', methods=['GET'])
@auth.login_required
def tasks():
    tasks = g.user.tasks
    task_list = []
    for t in tasks:
        d = {}
        d['name'] = t.name
        d['id'] = t.id
        task_list.append(d)
    return jsonify({'tasks':task_list})
返回响应后,变量“tasks”和“task_list”使用的内存是否会立即释放

在我的例子中,uwsgi进程似乎没有释放它们用于每个请求的内存,至少在每次返回之后似乎没有这样做

通过使用Flask SQLAlchemy扩展从MySQL数据库检索任务

谢谢

编辑: 这是我的uwsgi配置文件(/etc/flask-uwsgi/flask-uwsgi.ini):

我称之为:

uwsgi  --socket 127.0.0.1:8080 -w wsgi:app --ini /etc/flask-uwsgi/flask-uwsgi.ini --stats /tmp/statsock --memory-report

tasks
task\u list
都是局部变量,当view函数返回时,这些变量将被解除绑定

是否释放其内容的内存取决于是否存在对数据的其他引用或引用。当Python对象的引用计数下降到0时,Python对象将被清除,因此,如果其他任何对象仍然引用此函数之外的对象,那么它们将不会被清除

例如,
任务列表
列表对象没有其他引用,将立即清除。该列表包含新的
dict
对象(由循环中的
d
引用),并且这些对象也没有其他引用,因此将被清除。这些字典包含键的字符串;它们是重复使用的(在本例中,它们是内部的,每个字符串对象只有一个副本),不需要清除

这将留下
t.name
t.id
值,以及
g.user.tasks
参考;如果
g.user.task
是一个列表对象,则
g.user.task
是对该对象的引用,不会被清除。任何
t.name
t.id
值也可以在其他地方引用,并保留。然而,这通常是件好事

uwsgi  --socket 127.0.0.1:8080 -w wsgi:app --ini /etc/flask-uwsgi/flask-uwsgi.ini --stats /tmp/statsock --memory-report