Dep*_*ado 5 python websocket flask python-3.x
Jsonify似乎不适用于应用程序上下文,是否有解决方法?
我正在用websockets替换一些ajax请求,因为它是性能和网络问题所必需的.我在我的环境中安装了带有pip的Flask-WebSocket.现在我收到一个错误:
RuntimeError: working outside of application context
Run Code Online (Sandbox Code Playgroud)
我申请的骨架如下:
app/
??? forms
??? static
? ??? css
? ??? img
? ? ??? DefaultIcon
? ? ??? eps
? ? ??? png
? ??? js
??? templates
??? ups
??? views
Run Code Online (Sandbox Code Playgroud)
websockets python文件位于views/ajax.py中:
# -*- coding: utf-8 -*-
# OS Imports
import time
# Flask Imports
from flask import jsonify
from .. import sockets
from app.functions import get_cpu_load, get_disk_usage, get_vmem
# Local Imports
from app import app
from app.views.constants import info, globalsettings
@sockets.route('/_system')
def _system(ws):
"""
Returns the system informations, JSON Format
CPU, RAM, and Disk Usage
"""
while True:
message = ws.receive()
if message == "update":
cpu = round(get_cpu_load())
ram = round(get_vmem())
disk = round(get_disk_usage())
ws.send(jsonify(cpu=cpu, ram=ram, disk=disk)
Run Code Online (Sandbox Code Playgroud)
我使用此命令启动我的应用程序:
gunicorn -k flask_sockets.worker app:app
Run Code Online (Sandbox Code Playgroud)
这是我__init__.py的app /文件夹:
# -*- coding: utf-8 -*-
from flask import Flask
from flask_sockets import Sockets
app = Flask(__name__)
sockets = Sockets(app)
app.config.from_object('config')
from app import views as application
Run Code Online (Sandbox Code Playgroud)
为什么不jsonify工作,我可以使用什么?
在烧瓶中
jsonify是一个响应,它以json格式发送数据响应.
你可以这样做:
import json
Run Code Online (Sandbox Code Playgroud)
然后将ws.send更改为:
ws.send(json.dumps(dict(cpu=cpu, ram=ram, disk=disk)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2229 次 |
| 最近记录: |