保存上传的base64数据会出现TypeError:需要一个byte-like对象,而不是'str'。
我正在使用JavaScript库上传图像.它将图像数据放置在具有文件名和base64编码数据的JSON编码对象的表单字段中. 当我尝试将图像保存在烧瓶中时,我会得到此错误: builtins.TypeError TypeError: a bytes-like object is required, not 'str' 图像文件是用正确的名称创建的,但是数据已损坏,我无法打开它.如何保存上传的数据? app = Flask(__name__) UPLOAD_FOLDER = app.root_path + '/images/' @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'POST': image_base = json.loads(request.form['file'])['output']['image'] imag
8 2024-03-27
编程技术问答社区
Flask/Werkzeug,如何在登录后返回前一个页面
我使用的是基于使用Python的Werkzeug的烧瓶微框架. 在每个限制页面之前,都有一个装饰器来确保用户登录,目前将其返回到登录页面,如果他们未登录,则像这样: # Decorator def logged_in(f): @wraps(f) def decorated_function(*args, **kwargs): try: if not session['logged_in']: flash('Please log in first...', 'error') return redirect(url_for('login')) else: return f(*args, **kwargs) except KeyError: flash('Please
16 2024-03-19
编程技术问答社区
如何获得python解释器的全部argv命令行选项?
我们从文档中知道: -c 如果给出了此选项,则SYS.ARGV的第一个元素将为" -c",并且当前目录将添加到SYS.PATH的开始(允许该目录中的模块作为顶级模块导入). P> 如何获得完整的解释器命令行选项?我需要解决这个问题: 如果我启动了werkzeug开发服务器,则它将在叉子上丢失-c cmd选项.我想修补werkzeug,但找不到如何获得真正的选择. 如果您想知道为什么我需要这个 - 我想在要解析sys.argv之前先对一些代码进行预先处理.而且我认为Werkzeug方法由于在角案件中不起作用而不正确. 解决方案 如果我启动了werkzeug开发服务器,那么它将丢失-c cmd 叉子上的选项. 首先,该过程不简单地分叉.调用了一个新鲜的python解释器. 您对it will lost -c cmd是什么意思? cmd字符串在argv中消失的事实?那就是: $ python -c "import sys; print(sys.
6 2024-03-03
编程技术问答社区
检索werkzeug请求中的url锚点
我有一个DAV协议,该协议将带外数据存储在URL锚点中,例如ghi in DELETE /abc.def#ghi.服务器是烧瓶应用程序. 我可以看到请求通过tcpdump在电线上进入,但是当我查看werkzeug请求对象(例如url()或base_url())时,我回来的只是/abc.def. #ghi已被剥离. 是否有一种返回此信息的方法,还是我必须子类请求自己处理此信息?如果是这样,我可以用一个示例作为灵感吗? 解决方案 我遇到了相同的问题. Facebook身份验证API返回附加在重定向URL的哈希后面的访问令牌.以同样的方式,烧瓶的request.url将所有内容放在哈希符号后面的URL中. 我也在使用烧瓶,所以我认为您可以使用JavaScript的窗口来使用我的蛮力解决方法.然后,我只是提取了所需的(访问令牌),将其放入重定向URL中,我可以将访问令牌作为参数传递给接收视图功能.这是代码: @app.route('/app_response/
20 2024-01-26
编程技术问答社区
为什么AWS Elastic Beanstalk Python会在优先级上插入一个'静态'规则,而不是其他所有规则?
我的python应用程序的"静态"路由规则在我的AWS弹性beanstalk应用程序中表现得很奇怪(并且其他任何地方)似乎覆盖了所有其他规则. 例如,在我的开发机和AWS上使用以下两个函数,在我的开发机和测试服务器上,routes routes routes最后列出静态规则,match_route显示其他非静态规则匹配以'开头的路径匹配'静止的/...'.正如预期的那样,如果我导航到一个以static/...开头的路径的页面,那么我的其他(非静态)规则之一就可以匹配.但是(仅)在AWS-EB上,服务器的静态规则被调用! 为什么和为什么AWS-EB如何将此规则"插入"其他所有规则?如何在AWS上禁用此行为,或在我的非AWS系统中复制它? application.url_map.host_matching = True # ... def routes(verbose, wide): """List routes supported by the applicat
如何让Flask/保持Ajax HTTP连接的活力?
我有一个jquery ajax呼叫,就像: $("#tags").keyup(function(event) { $.ajax({url: "/terms", type: "POST", contentType: "application/json", data: JSON.stringify({"prefix": $("#tags").val() }), dataType: "json", success: function(response) { display_terms(response.terms); }, }); 我有类似的烧瓶方法: @app.route("/terms", methods=["POST"]) def terms_by_prefix(): req = flask.request.json tlist = terms.
30 2024-01-20
编程技术问答社区
重新安装后无法运行apache airflow,python导入错误
使用pip install apache-airflow进行新的安装后,任何尝试以Python导入错误运行气流结束的尝试: Traceback (most recent call last): File "/Users/\*/env/bin/airflow", line 26, in from airflow.bin.cli import CLIFactory File "/Users/\*/env/lib/python3.7/site-packages/airflow/bin/cli.py", line 70, in from airflow.www.app import (cached_app, create_app) File "/Users/\*/env/lib/python3.7/site-packages/airflow/www/app.py", line 26, in from flask_wtf.csrf imp
12 2024-01-20
编程技术问答社区
Flask的自动重载和长期运行的线程
我正在烧瓶应用程序中实现一个长期的线程.在调试模式下,随着重新加载的激活,长期运行的线在重新加载时不会被杀死. 而是因为在重新加载后运行并启动线程的代码,每个周期都会创建一个额外的线程. 除了禁用重新加载外,我该如何防止这种情况? 在MOD_WSGI下运行时会发生同样的情况,并具有其自动式功能? 更新:长期运行的线实际上在重新加载时被Werkzeug杀死.还有一个额外的副本,这是由于Werkzeug的重载器采取了一个运行初始化代码的额外线程. 解决方案 mod_wsgi重新加载如下: /a> 在长期运行请求的情况下,默认情况下,如果它在5秒内未完成,则该过程将被强行杀死.这是为了避免进程锁定问题,因为请求无法完成.
12 2023-12-15
编程技术问答社区
当我在gunicorn上运行Flask应用时,设置app.wsgi_app = ProxyFix(app.wsgi_app)是怎么回事?
我使用烧瓶构建了一个基本的Web应用程序,并能够使用其本机HTTP服务器从虚拟机运行它.我很快意识到,通过此设置,请求正在阻止(我无法同时提出资源请求;任何新请求都会等到较早的请求完成),并决定尝试使用Gunicorn运行该应用程序来解决此问题.我跟随文档,特别是使用此行运行的文档: gunicorn -w 4 -b 127.0.0.1:4000 myproject:app 但是,它无法启动仅此操作,并抱怨没有WSGI应用程序.在互联网上戳,我发现许多人发布了示例,包括以下内容: from werkzeug.contrib.fixers import ProxyFix app.wsgi_app = ProxyFix(app.wsgi_app) 我补充了这一点,它解决了我的问题.我很困惑,因为这显然是要解决HTTP代理后面服务的问题,但是加入枪支会施加HTTP代理吗?还是我总是在代理后面,而对于烧瓶的内置服务器并不重要? 另外, 解决方案 聚会有点晚,但是在
16 2023-12-15
编程技术问答社区
104、'连接被对方重置'套接字错误,或者什么时候关闭套接字的结果是RST而不是FIN?
我们正在开发Python Web服务和客户端网站并行.当我们从客户端向服务提出HTTP请求时,一个呼叫始终在socket.py中提出socket.error,in read: (104, 'Connection reset by peer') 当我与Wireshark聆听时,"好"和"坏"响应看起来非常相似: 由于OAuth标头的大小,请求分为两个数据包.该服务对ACK 都响应 服务发送响应,每个标头一个数据包(http/1.0 200 OK,然后是日期标题等).客户用Ack响应每个人. (良好的要求)服务器发送鳍,ack.客户用鳍ACK做出回应.服务器响应ack. (不良请求)服务器发送第一个,ACK,客户端未发送TCP响应,socket.Error在客户端上升高. Web服务和客户端都在Gentoo Linux X86-64盒子上运行,运行GLIBC-2.6.1.我们在同一Virtual_env中使用Python 2.5.2. 客户端是一个django
46 2023-12-15
编程技术问答社区
Flask重载器在Windows上出现 "没有名为Scripts\flask的模块 "的崩溃。
当我在Windows上运行flask run时,我会收到以下错误 C:\Python37\python.exe: No module named C:\Python37\Scripts\flask 这以前是在工作的,这个问题始于我最近创建了一个新的Env. 解决方案 这是 werkzeug 0.15.5中引入的一个错误.升级至至少werkzeug 0.15.6,其中包含修复程序.您也可以使用python -m flask run而不是围绕它运行.
18 2023-12-05
编程技术问答社区
按要求启动和停止烧瓶
我正在编写一个应用程序,该应用程序可以揭示用烧瓶实现的简单RPC接口.但是,我希望它可以激活并停用该接口.另外,应该有可能在同一python解释器中运行该应用程序的多个实例,每个python解释器都有自己的RPC接口. 该服务仅暴露于Localhost,这是一个原型,因此我不担心安全性.我正在寻找一个小而简单的解决方案. 这里的明显方法似乎使用了烧瓶开发服务器,但是我找不到将其关闭的方法. 我创建了一个要曝光的功能的烧瓶蓝图,现在我正在尝试编写类似于此类似的RPC接口的类: class RPCInterface: def __init__(self, creating_app, config): self.flask_app = Flask(__name__) self.flask_app.config.update(config) self.flask_app.my_app = creating_app
10 2023-11-30
编程技术问答社区
使用内部Werkzeug开发服务器部署flask
为什么不建议在生产中使用烧瓶/werkzeug内部开发网络服务器?可能会出现什么样的问题? 我在问,因为在工作中,我被迫这样做,并每天使用Shift Cron重新运行服务! 解决方案 如果您每天都必须使用CRON作业来杀死和重新启动它,则您已经发现了使用Blask Development Server的 Major 问题.开发服务器不是为了稳定性,寿命,可配置性,安全性,速度或开发期间便利性以外的任何其他内容而写的. 适当的WSGI设置将更快,正确处理多个连接,最重要的是,对您来说,定期重新启动应用程序过程以清理任何可能堆积的crufft. 其他解决方案 我在没有超时的响应处理程序内有一个网络调用.出现了问题,它在等待一段时间(我正在使用requests模块),然后显然从未恢复过. 由于Werkzeug Server只有一个线程,因此整个开发服务器变得完全不可用.
20 2023-11-30
编程技术问答社区
从基于Flask的Python服务器上下载一个文件
我正在尝试使工作代码: http://code.runnable.com/uiidhkohv5jqaab6/how-to-to-downoal-download-a load-a-file-file-generated-gen-fly-on-the-the-fly-in-in-the-fly-in--in--in--in--in--in--in--in--in--in--in--in--in--in--in------------烧伤 我的目标是当用户访问我的Blask Base Python服务器上的Web服务时,能够在Web浏览器上下载文件. 所以我写了以下代码: @app.route("/api/downloadlogfile/") def DownloadLogFile (path = None): if path is None: self.Error(400) try: with open(pat
20 2023-11-29
编程技术问答社区
如何从内部错误中退出 uWsgi Worker(python werkzeug)?
我使用werkzeug用python编写了一个宁静的API.它使用nginx/uwsgi运行.当发生内部错误(丢失的Zookeeper会话)时,我想杀死工作流程,让UWSGI催生新的工人. 如果我致电sys.exit(0),则工人不会退出.也许SystemExit或异常被捕获到某个地方.我正在使用init脚本作为服务, exec $ root/run uwsgi-socket 127.0.0.1:3037 -master -master-workers 4- threads 10 -harakiri 60 - die-nie-term-term -thunder-lock-lazy-apps - lazy-apps- -py-tracebacker/tmp/ledgerwebtbsock -wsgi-file my_server.py-logto/my_server.py.py 解决方案 uwsgi --help | grep on-exception 返回一堆选
16 2023-11-12
编程技术问答社区
nginx + uwsgi + flask-禁用自定义错误页面
是否可以禁用Nginx的自定义错误页面 - 如果我可以称呼它们 - 显示我的框架的异常页面? 我真的看不到我的werkzeug调试器工具在html中呈现... 更新 好吧,我必须制作一个非常非常简单的烧瓶应用程序才能工作,我将发布位: /home/my_user/.virtualenvs/nginx-test/etc/nginx.conf worker_processes 1; events { worker_connections 1024; } http { server { listen 5000; server_name localhost; access_log /home/my_user/.virtualenvs/nginx-test/lib/nginx/access.log; error_log /ho
18 2023-11-12
编程技术问答社区
如何用Flask+uWSGI设置自动加载?
我正在寻找 uwsgi + uwsgi + django autoreload Mode for Blask. 解决方案 您可以尝试使用Substisord作为UWSGI应用程序的经理.它还具有一个手表功能,该功能自动加载文件或文件夹"触摸"/修改时. You will find a nice tutorial here: flask+nginx+uwsgi+usepstisord 其他解决方案 我正在运行UWSGI版本1.9.5和选项 uwsgi --py-autoreload 1 工作很棒 其他解决方案 如果您正在使用命令参数配置uwsgi,请通过--py-autoreload=1: uwsgi --py-autoreload=1 如果您使用的是.ini文件来配置uwsgi并使用uwsgi --ini,请将以下内容添加到您的.ini文件: py-autoreload = 1
20 2023-11-12
编程技术问答社区
X-Forwarded-Proto和Flask
我在中所描述的问题完全相同.这个问题的答案是一项很好的工作,但我不了解基本问题.在负载平衡器和Web/App服务器之间使用HTTP终止SSL非常普遍.哪一块堆栈不尊重X-Forwarded Proto?是Werkzeug吗?烧瓶? uwsgi? 在我的情况下,我使用的是AWS ELB(设置X-Forwarded Proto)=> nginx(沿X-Forwarded Proto向UWSGI转发).但是在Python应用程序中,我必须如上所述的问题中所述. 由于这是一种常见的部署方案,因此似乎应该有一个更好的解决方案.我想念什么? 解决方案 您缺少.请参阅烧瓶无需子类.只需将此中间件组件添加到WSGI堆栈中: # Werkzeug 0.15 and newer from werkzeug.middleware.proxy_fix import ProxyFix from flask import Flask app = Flask(__name__) app.
18 2023-11-12
编程技术问答社区
扩展werkzeug用户代理类
我想再浏览器扩展Werkzeug Useragent类.在不修改werkzeug库的源代码的情况下,我该怎么做?我是Python的新手,所以我对Mixin,继承,模块等有很小的想法. 我在文档中发现: 最好创建BaseRequest的自定义子类,并通过Mixins或Direct实现添加缺失的功能.这里是此类子类的示例: from werkzeug.wrappers import BaseRequest, ETagRequestMixin class Request(BaseRequest, ETagRequestMixin): pass 我应该将其放在我的代码的哪一部分上以及如何扩展Standart Useragent类?另外,我正在使用Werkzeug和烧瓶.预先感谢. 解决方案 惊人.一旦提出问题,答案就会出现:) from werkzeug.wrappers import BaseRequest, ETagRequestMixin class
14 2023-11-10
编程技术问答社区
使用 Flask 微框架将旧 URL 重定向到新 URL
我正在使用使用Python(我的情况下为2.6)的Blask Micro-Framework(基于Werkzeug)来替换当前网站. 核心功能和许多页面相同.但是,通过使用烧瓶,许多以前的URL与旧的URL不同. 我需要一种方法来以某种方式存储每个旧URL和新URL,因此,如果用户在旧的URL中键入旧URL,则将它们简单地转发到新的URL,并且一切对它们都有效. 有人知道这是否可以在烧瓶中吗? 预先感谢您的帮助: - ) 解决方案 类似的东西应该让您入门: from flask import Flask, redirect, request app = Flask(__name__) redirect_urls = { 'http://example.com/old/': 'http://example.com/new/', ... } def redirect_url(): return redirect(redire
20 2023-11-10
编程技术问答社区