我正在用Flask构build一个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})
在返回响应之后,variables“tasks”和“task_list”使用的内存是否会立即释放?
就我而言,似乎uwsgi进程并没有释放他们用于每个请求的内存,至less在每次返回之后似乎都没有做好。
Flask,XAMPP – Apache,mod_wsgi,windows – 安装mod_wsgi
Nginx + uWsgi + Flask应用程序性能testing
Flask Windows Apache问题
通过使用Flask-sqlAlchemy扩展从MysqL数据库中检索任务。
谢谢!
编辑:这是我的uwsgiconfiguration文件(/etc/flask-uwsgi/flask-uwsgi.ini):
[uwsgi] master = true die-on-term = true processes = 1 threads = 2 logger = file:/var/log/flask-uwsgi/flask-uwsgi.log
我称之为:
uwsgi --socket 127.0.0.1:8080 -w wsgi:app --ini /etc/flask-uwsgi/flask-uwsgi.ini --stats /tmp/statsock --memory-report
Flask + uwsgi + Nginx:TypeError:…不需要参数(给出2)
使用Apache mod_wsgi进行HTTPstream式传输
Nginx,uWsgi,Flask应用程序不显示更改,直到服务器重新启动
$ http.post请求标头字段Access-Control-Allow-Headers错误不允许Access-Control-Allow-Origin
tasks和task_list都是局部变量,当view函数返回时这些变量将被解除绑定。
如果其内容的内存被释放取决于其他数据还是对数据的引用存在。 当Python引用计数下降到0时,Python对象被清除,所以如果其他东西仍然引用这个函数以外的对象,那么它们将不会被清除。
例如, task_list列表对象没有其他引用,将立即清除。 该列表包含新的dict对象(在循环中由d引用),这些也没有其他的引用,所以将被清除。 这些字典包含键的字符串; 这些被重用(在这种情况下它们是被执行的,每个字符串对象只有一个副本)并且不需要被清除。
这留下了t.name和t.id值以及g.user.tasks引用; 如果g.user.task是一个列表对象,则g.user.task是对该对象的引用,它不会被清除。 任何t.name和t.id值也可以在其他地方被引用,并留在周围。 然而,这通常是件好事。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。