gpt4 book ai didi

python - 无法在 Flask websocket 中使用 Jsonify

转载 作者:太空狗 更新时间:2023-10-30 00:45:12 25 4
gpt4 key购买 nike

Jsonify 似乎无法在应用程序上下文之外工作,是否有解决方法?

我正在用 websockets 替换一些 ajax 请求,因为性能和网络问题需要它。我在我的环境中安装了带有 pip 的 Flask-WebSocket。现在我得到一个错误:

RuntimeError: working outside of application context

我的应用程序的框架如下:

app/
├── forms
├── static
│ ├── css
│ ├── img
│ │ └── DefaultIcon
│ │ ├── eps
│ │ └── png
│ └── js
├── templates
├── ups
└── views

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)

我使用此命令启动我的应用程序:

gunicorn -k flask_sockets.worker app:app

这是我在 app/文件夹中的 __init__.py:

# -*- 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

为什么 jsonify 不起作用,我可以用什么代替?

最佳答案

在 flask 中

jsonify 是一个响应,它以 json 格式发送带有数据的响应。

你可以这样做:

import json

然后将 ws.send 更改为:

ws.send(json.dumps(dict(cpu=cpu, ram=ram, disk=disk)))

关于python - 无法在 Flask websocket 中使用 Jsonify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20996117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com