WebSocket 传输不可用。安装 eventlet 或 gevent 和 gevent-websocket 可提高性能
我正在使用套接字IO和烧瓶应用程序. 这是我的初始化: app = Flask(__name__) app.config['SECRET_KEY'] = APP_SECRET_KEY jwt = JWTManager(app) cors = CORS(app) app.config['CORS_HEADERS'] = 'Content-Type' # app.config['transports'] = 'websocket' socketio = SocketIO(app, cors_allowed_origins="*", async_mode='threading') socketio.run(app, debug=True) 可能导致此警告,这是什么意思? 控制台看起来像这样: 已经尝试安装gevent和eventlet,但没有删除消息 解决方案 如果是执行Python文件时发生的问题 只需尝试pip install eventlet它对我有用,您
30 2024-04-23
编程技术问答社区
Flask SocketIO 不会向特定房间发送数据
我正在创建一个从烧瓶应用程序获取数据的程序,并且可以将数据发送到烧瓶应用程序,并且我正在使用套接字IO来执行此操作. socketio.emit('receive_data', data) 发送到此时最终工作: @sio.on('receive_data') def handle_receive_data(data): print('Received data:', data) 但是当我添加房间参数 时 socketio.emit('receive_data', data, room='my_room') 突然,接收数据甚至从未被调用.这是我的程序完整代码: import socketio sio = socketio.Client() @sio.on('connect') def on_connect(): print('Connected to server') sio.emit('join_
30 2024-04-23
编程技术问答社区
Flask-socketio 向另一个命名空间发送事件
我正在使用烧瓶 - socketio( http://flask-socketio.readthedocs.org/en/最新/). 我目前正在获得 KeyError: '/local' 在event.py中使用此功能时.注意不同的名称空间: @socketio.on('connect', namespace='/photo') def client_connect(): emit('event', { 'type': 'client_connect' }, namespace='/local') 使用烧瓶射击可以散发到事件发生的单独名称空间?文档似乎是这样暗示的,但是我无法锻炼,为什么我要继续获得KeyError. 编辑:谢谢@miguel的提议答案,我再次尝试(距离项目很长时间后),但仍然可以获得以下内容: @socketio.on('connect', namespace='/local') def local_client_conne
26 2024-04-23
编程技术问答社区
Flask 登录、会话管理和 AJAX
我很难与烧瓶current_user对象和@login_required装饰器一起使用Ajax呼叫.我相信这与不会通过的会议有关. 目的是使用户单击一个链接,该链接将AJAX调用到路由URL,该链接将通过SOAP服务提供SSO会话ID. SOAP服务需要通过EMP_ID,可以通过current_user.emp_id属性访问. 我最初尝试了没有@login_required decorator的Ajax调用,只是传递了一条简单的消息,因此成功返回: app.js const ssoLinks = document.querySelectorAll('.sso'); ssoLinks.forEach((ssoLink) => { ssoLink.addEventListener('click', (e) => generateSSOLink(e, ssoLink.id)); }); function generateSSOLink(e, page) {
18 2024-04-23
编程技术问答社区
Python Flask--如何通过 cookie/会话记住匿名用户?
i是建立一个烧瓶网站,该网站是研究实验的一部分. 我需要能够记住匿名用户,以便我网站的每个访问者都会是匿名和独特的,但也被记住,以便他们无法再次进入该网站(他们将重定向到"谢谢您的参与"页面) . 我该怎么做?我研究了烧瓶(如何生成唯一的匿名ID并将其保存给用户cookie?)和烧结flask-login(必须使用用户登录以获取ID),但没有找到此问题的特定解决方案. 请帮助. 解决方案 没有完美的解决方案解决您的问题,因为如果用户是匿名的,您将无法识别. 最实用的可能是使用会话,并保存他们在会话变量中完成调查.但是,如果他们清除了饼干,他们将能够再次进入网站. 示例实现: from flask import session, app @app.before_request def make_session_permanent(): session.permanent = True 在您的调查表中查看: if not "already
30 2024-04-22
编程技术问答社区
使用 remember_me 时,Flask-Login 在使用注销后仍处于登录状态
要使用Blask-login在烧瓶中注销用户,我只需调用logout_user(),但是在我单击登录后添加一些其他检查后,然后单击"登录页面",然后再次登录"登录页面". .仅当我选择"记住我" 时才发生 我认为我误解了会话的概念和logout_user(),有人可以澄清和帮助吗? 我认为,当我清除会话时,内部的所有内容包括'user_id','username'等...也将被清除.但是某种程度上仍然存在" user_id"或"用户名"字段.我认为这就是导致问题的原因. 我的代码如下: 注销部分: @mod.route('/logout/') @login_required def logout(): logout_user() session.clear() return redirect(url_for('users.login')) 登录部分: @mod.route('/login/', methods=['GET', 'POST'
22 2024-04-22
编程技术问答社区
在两个 flask 服务器之间共享会话
我有一个带有两个烧瓶服务器的后端.一个处理所有RESTFULL请求的一个和一个是Blask-Socketio服务器.有什么方法可以在这两个应用程序之间共享会话变量(登录用户等)?如果这很重要,它们确实会在不同的端口上运行. 我如何理解他们在客户端会话cookie上工作的会话,所以这两个服务器都不应该访问信息吗?如果是的话?如果没有,就可以实现相同的效果吗? 解决方案 有几种方法可以使用,具体取决于您如何设置两个服务器. 最简单的解决方案是将两个服务器显示在同一域和端口上的客户端.例如,您可以将www.example.com/socket.io作为socket.io服务器的根,以及www.example.com上的任何其他URL,转到您的HTTP服务器.为此,您需要使用反向代理服务器,例如Nginx.客户端不会直接连接到您的服务器,而是在单个端口上连接到Nginx,并且Nginx配置为转发请求根据URL. . 在上述设置的情况下,两个服务器都暴露于同一域上的客户端,
140 2024-04-22
编程技术问答社区
关闭浏览器后,Flask.session 会持续存在
我希望能够检测到自上次登录烧瓶站点以来,用户是否已关闭浏览器.我已经读到,烧瓶会话应该在关闭浏览器时到期,但是据我所知,会话数据存储在服务器上,并且在浏览器会话中持续存在.当用户关闭浏览器时,如何清除所有会话数据? mainapp.py: @mainapp.route('/') def home(): if 'user_name' in session: logger.debug( 'Logged in as {0}'.format(escape(session['user_name']))) return render_template('home.html') userviews.py: @userviews.route("/login", methods=["GET", "POST"]) def login(): form = LoginForm(request.form) if form.validate_on
22 2024-04-22
编程技术问答社区
使用 Python+Flask 进行高效会话变量服务器端缓存
方案: 主要的Web应用程序w. python+烧瓶 烧瓶登录和Flask.session用于基本会话变量(用户ID和会话-ID) Flask.session和限制? (cookie) 基于cookie,基本上仅在客户端坚持下去. 对于某些会话变量,这些变量会定期阅读(即,用户权限,自定义应用程序配置),感觉尴尬 to 将所有这些信息随附在cookie中,在每个页面请求和响应. 数据库太多了? 由于可以通过在登录处引入唯一的会话ID来确定会话,因此可以使用某些服务器端会话变量管理.从数据库中读取服务器端 也感觉就像是不必要的开销. 问题 处理服务器端的会话变量的最有效方法是什么? 也许这可能是基于内存的解决方案,但我担心可以在不会共享内存存储的会话数据的不同线程中执行不同的烧瓶应用程序请求,或者在同时阅读编写的情况下会引起冲突. 我正在寻找计划基本级别体系结构的建议和最佳实践. 解决方案 您的本能是正确的,这可能不是这
10 2024-04-22
编程技术问答社区
烧瓶 - 直接将按钮直接进入另一页
在我的主页上,我有一个按钮,上面写着"输入" Enter 我想要它,以便单击此按钮时,它将直接直接进入"主页"页面 Python代码: @app.route('/', methods = ['GET', 'POST']) def index(): return render_template("main.html") @app.route('/home', methods = ['GET', 'POST']) def home(): return render_template("test1.html") 如何完成?谢谢 解决方案 这是锚标签的工作. jinja2(烧瓶的模板渲染组件)允许您使用url_for函数动态创建URL,用于给定的视图功能. 在您的情况下
80 2024-04-05
编程技术问答社区
储物箱Python按钮
我正在尝试在页面上创建两个按钮.我想在服务器上执行其他python脚本.到目前为止 def contact(): form = ContactForm() if request.method == 'POST': return 'Form posted.' elif request.method == 'GET': return render_template('contact.html', form=form) 我需要根据按按钮按按钮进行更改? 解决方案 给您的两个按钮相同的名称和不同的值: 然后在您的烧瓶视图功能中,您可以告诉使用哪个按钮提交表格: def c
8 2024-04-05
编程技术问答社区
ES6 build chain python backend (flask) not SPA
我只是想了解开发环境设置的最佳方法.我的堆栈是vue.js(如果我能得到想要的构建,也许会做出反应)和后端.这是不是单页应用程序和烧瓶正在使用Jinja2模板为HTML页面提供.有些页面将没有vue.js的其他页面会有许多组件. 我想要的是能够在ES6中进行编码(目前使用vue.js在正常的ES5 JavaScript中使用而没有移动).我希望能够在烧瓶中的Python中进行编码,我希望Blask Dev服务器运行并拾取文件和重新启动的更改. 我正在使用Pycharm作为我的编辑器,并且对JavaScript构建过程只有一点知识. 编辑i在我的编辑器中文件,浏览器页面刷新,并在页面上进行所有服务器端更改,ES6更改并在页面上可用. 如果这是错误的位置,请在关闭之前将我引​​导到正确的位置. 解决方案 我需要在WebPack中运行此插件 https://github.com/gajus/gajus/write-file-file-file-webpack-p
22 2024-04-05
编程技术问答社区
flask中的浏览器缓存问题
我已经使用烧瓶建立了一个网站( www.csppdb.com ).有时,当我作为一个用户登录时,注销,然后登录另一个用户,我仍然会从我登录的第一个用户中看到页面.刷新页面时,该问题立即解决.我认为如果我没记错的话,这就是"缓存".有什么办法可以在网站范围内禁用此问题,以便访问的每个页面都需要新的刷新? 这就像与朋友共享计算机.他登录Facebook,然后注销.现在,您在他的计算机上登录,并且看到了他的个人资料...(尴尬).刷新页面后,问题已解决. 这是我的一些代码.我当时正在使用烧瓶,但然后尝试"滚动自己" from flask.ext.mysql import MySQL import os from flask import Flask, request, jsonify, session, url_for, redirect, \ render_template, g, flash from data import * from werkzeug im
16 2024-04-04
编程技术问答社区
在Flask中上传文件大于MAX_CONTENT_LENGTH导致连接重置
我正在尝试限制上传文件大小,我将app.config ['max_content_length']设置为我想要的最大值, 我使用此代码显示错误. @app.errorhandler(413) def request_entity_too_large(error): return 'File Too Large', 413 使用卷曲时,错误显示正确. 我使用Firefox/Safari进行了检查,在两个我都会收到连接掉落/重置的浏览器错误. Firefox The connection was reset The connection to the server was reset while the page was loading. The site could be temporarily unavailable or too busy. Try again in a few moments. If you are unable
12 2024-04-03
编程技术问答社区
为什么我的Flask应用在不清除缓存的情况下无法渲染CSS?
我一直在使用烧瓶,并将我渲染的HTML链接到CSS样式表.我注意到,每当我更新CSS代码时,都必须清除缓存以使其在网页上进行更新.我该如何解决? 解决方案 我假设您正在加载CSS文件,例如: {{ url_for('static', filename='some/file.css') }} 要立即在开发中刷新,您应该将以下配置VAR设置为-1: app.config['SEND_FILE_MAX_AGE_DEFAULT'] = -1 正如@matvei所述,此问题与您的浏览器有关.要可视化这一点,请打开开发工具,转到网络选项卡,然后突出显示特定的CSS文件.然后在正确的部分中,以查看标题下的以下行> 响应标头: Cache-Control: public, max-age=-1 如果正确应用了设置,则应显示-1.如果显示其他任何内容,则需要刷新该特定文件,直到它显示-1,可能必须清除您的缓存.这是因为浏览器可以选择是否基于Cache-Control标
12 2024-04-03
编程技术问答社区
RuntimeError: assets实例未与应用程序绑定,且当前环境中没有应用程序
我正在努力修改 cookiecutter flask flask app.我目前正在尝试将datepicker添加到页面上.我已经找到了以下from flask_assets import Bundle, Environment import os css = Bundle( "libs/bootstrap/dist/css/spacelab/bootstrap.css", "bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.css", "css/style.css", "css/home.css", # "css/style.css", filters="cssmin", output="public/css/common.css" ) js = Bundle( "libs/jQuery/dist/jquery.js", "libs/bootstrap/dist/j
16 2024-04-03
编程技术问答社区
将kik机器人部署到heroku上不工作
我一直在尝试将我的Kik API部署到Heroku,但这只是不起作用.我已经设置了我的procfile,我的需求.但是,当我在手机上打开Kik应用程序并尝试向机器人发送消息时,消息不会发送,并且不会回荡我的消息.通过使用Ngrok作为Webhook,我能够使该机器人正常工作,并可以很好地回荡消息.但是,当我尝试部署到Heroku时,它根本没有起作用.作为参考,Kik机器人是使用烧瓶和Kik API编写的,这是我的代码 from flask import Flask, request, Response import os from kik import KikApi, Configuration from kik.messages import messages_from_json, TextMessage app = Flask(__name__) BOT_USERNAME = os.environ['BOT_USERNAME'] BOT_API_KEY= os.envir
16 2024-04-03
编程技术问答社区
在react js前端显示一个1GB的视频文件,用flask存储在私人S3桶中
我需要在reactjs中显示/流动大型视频文件.用户使用React表单和烧瓶将这些文件上传到私有S3存储库. 我尝试了getObject方法,但是我的文件大小太大了. get a signed url方法要求我下载文件. 我是AWS-PYTHON-REACT设置的新手.在React中显示大型视频文件的最佳/最高效/最不昂贵的方法是什么? 解决方案 AWS提供其他特定于流的服务,但是如果您真的想从S3中脱离S3,则可以使用Torrent检索文件,而torrent则可以使用正确的客户端/videoplayer,而无需下载整个整个内容而开始播放它们文件. 由于您提到您使用的是python,因此可以使用AWS SDK这样做: import boto3 s3 = boto3.client('s3') response = client.get_object_torrent( Bucket='my_bucket', Key='/some_prefix
12 2024-04-03
编程技术问答社区
如何用python将Flask的HTML表单中的文件上传到S3桶中?
我有一个用于上传文件的HTML表单(以烧瓶中的实现).我想将上传的文件直接存储到S3. 烧瓶实现的相关部分如下: @app.route('/',methods=['GET']) def index(): return ' Upload' i然后使用boto3将文件上传到S3如下: file = request.files['files'] s3_resource = boto3.resource( 's3', aws_access_key_id='******', aws_secret_access_key='*******') bucket = s3_resource.Bucket(
14 2024-04-03
编程技术问答社区
我应该为每个文件上传请求创建一个新的 boto3 客户端实例,还是使用共享实例?
我想知道,我应该为每个文件上传请求创建一个boto3客户端的新实例,还是使用共享实例?哪种正确的方法? 创建一个新实例每个上传请求 @app.route('/', methods=['POST']) def upload_file(): file = request.files['file'] file.save('/tmp/file.ext') client = boto3.client('s3') client.upload_file('/tmp/file.ext', # Path to local file 'my-space', # Name of Space 'file.ext') # Name for remote file 每个上传请求的共享实例 client = boto3.client('s3') @app.route('/', methods=['POST']) def
12 2024-04-03
编程技术问答社区