默认情况下,使用内置服务器(Flask.run
)运行Flask应用程序时,它会监视其Python文件,并在代码更改时自动重新加载应用程序:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎仅适用于*.py文件,我似乎没有找到任何方法将此功能扩展到其他文件.最值得注意的是,当模板更改时让Flask重新启动应用程序非常有用.我已经不知道有多少次我在模板中摆弄标记并且因为没有看到任何变化而感到困惑,只是发现应用程序仍在使用旧版本的Jinja模板.
那么,有没有办法让Flask监控文件存在于模板目录中,还是需要深入到框架的源代码?
编辑:我正在使用Ubuntu 10.10.没有在任何其他平台上尝试过.
在进一步查询之后,我发现模板中的更改确实会实时更新,而无需重新加载应用程序本身.但是,这似乎只适用于传递给的那些模板flask.render_template
.
但实际上,在我的应用程序中,我有很多可重复使用的参数化组件,我在Jinja模板中使用它们.它们被实现为{% macro %}
s,驻留在专用的"模块"中并被{% import %}
编入实际页面.所有不错和DRY ...除了那些导入的模板显然从未检查过修改,因为它们根本没有通过render_template
.
(奇怪的是,对于通过调用的模板,这不会发生{% extends %}
.至于{% include %}
,我不知道,因为我没有真正使用它们.)
总而言之,这种现象的根源似乎介于Jinja和Flask或Werkzeug之间.我想这可能需要为这些项目之一的bug追踪者旅行:)同时,我接受了jd.的回答是因为这是我实际使用的解决方案 - 而且它就像一个魅力.
我正在阅读Flask文档.有人告诉我app.run(host='0.0.0.0')
,我可以公开服务器.
这是什么意思 ?如何在另一台计算机(仅localhost:5000
在我自己的计算机中)访问服务器?
我可以做这两件事吗:
我回答这些问题的主要动机是我正在处理一个应用程序,并且我使用了情感分析,但我不知道我是如何做到这一点的。
谁能帮我解决这个问题。?
或者有什么方法可以在flutter应用程序中进行文本情感分析?
我有一个在本地运行良好的Flask应用程序,但是当我推送到Heroku时,我收到错误消息:
* Running on http://127.0.0.1:5000/
[INFO] Starting gunicorn 18.0
[ERROR] Connection in use: ('0.0.0.0', 8163)
Run Code Online (Sandbox Code Playgroud)
我在这个问题上尝试了解决方案,其中gunicorn和werkzeug正在互相争斗,但是__name__ == "__main__"
在我的主应用程序文件(run.py
)中添加一个 块并没有解决我的错误.
这篇SO帖子建议确保我的流程全部清理完毕.我这样做但它仍然无法正常工作,所以我实际上删除了我的整个heroku应用程序并进行了修复,它仍然给出了同样的错误.
我的run.py
文件看起来像:
#!pl_env/bin/python
from app import app
if __name__ == "__main__":
app.run(debug=True, port=33507)
# [33507 is the Flask port on Heroku]
Run Code Online (Sandbox Code Playgroud)
我的Procfile
是:web:gunicorn run:app
__init__.py
应用程序中的文件是:
from flask import Flask
import os
from flask.ext.login import LoginManager
app = Flask(__name__)
app.config.from_object('config')
lm = LoginManager()
lm.init_app(app)
lm.login_view = 'login'
from app import views …
Run Code Online (Sandbox Code Playgroud) 一旦我在flask中设置SERVER_NAME或host属性,我无法通过其url在外部解析任何方法.以下是我的app init配置:
flask_sqlalchemy import SQLAlchemy
from flask.ext.cors import CORS
__authors__ = 'DarkStar1'
from flask import Flask
app = Flask(__name__)
app.config.from_object('config')
app.config['DEBUG'] = True
app.config['SERVER_NAME'] = '0.0.0.0'
#app.run(host='0.0.0.0')
CORS(app)
db = SQLAlchemy(app)
from oms import user_service, person_service
Run Code Online (Sandbox Code Playgroud)
我可以设置DEBUG参数/属性,但尝试设置主机或SERVER_NAME会导致所有网址,例如http:// <hostname>:5000/test,结果为404.由于服务器是一个远程开发服务器,我能够通过localhost在所有url上的隧道中获取200秒.端口已启用,我正在使用的烧瓶版本在python 2.7.6上为0.10.1.我搜索和阅读文档无济于事.
我有一个 EC2 实例,在端口 8080 上运行 Flask 服务器。
* Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
Run Code Online (Sandbox Code Playgroud)
我可以运行curl
并从我的 EC2 实例获取响应。
$ curl -X GET '0.0.0.0:8080/fbeac'
Run Code Online (Sandbox Code Playgroud)
但是,我无法使用公共 IP/DNS 来获取响应并运行
$ curl -X GET '3.135.62.118:8080/fbeac'
Run Code Online (Sandbox Code Playgroud)
结果是curl: (7) Failed to connect to 3.135.62.118 port 8080: Connection refused
。curl
当我尝试使用本地计算机时,我遇到了同样的错误。
我的应用程序正在侦听端口 8080,我通过运行来检查该端口netstat
。
$ netstat -an | grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
Run Code Online (Sandbox Code Playgroud)
此外,我已确保安全组设置正确。我仅尝试了自定义 TCP 端口 8080、所有 TCP 端口和(当前)所有流量。我还在旁边打开了 HTTP/HTTPS 端口以防万一,但没有成功。
这让我相信这可能是防火墙问题,但我使用的是 Amazon Linux 计算机,默认策略似乎是ACCEPT
,我通过运行进行了检查iptables
。 …
有人可以在Heroku上向我解释这条错误消息吗?应用程序在本地工作正常,但从未在网上成功
heroku[slug-compiler]: Slug compilation started
heroku[slug-compiler]: Slug compilation finished
heroku[web.1]: State changed from crashed to starting
heroku[web.1]: Starting process with command `python app.py ${PORT}`
app[web.1]: * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
Run Code Online (Sandbox Code Playgroud)
该应用程序本身并不复杂
from flask import Flask, render_template
app = Flask(__name__, static_folder='static')
@app.route('/')
def hello_world():
return render_template('index.html')
if __name__ == '__main__':
from os import environ
app.run(debug=False, port=environ.get("PORT", 5000))
Run Code Online (Sandbox Code Playgroud) 有没有办法生成特定的IP地址或创建在本地运行的flask http://127.0.0.1:5000/站点的特定站点,以从不同的设备访问使用flask制作的网络应用程序,因为默认情况下它在本地运行并在http://127.0.0.1:5000/下但是,我想从不同的设备访问它。如果,有办法请帮忙
我的 Mac @ 上运行着 FLask Web 开发服务器127.0.0.1:5000/
。我的 mac 和我的 android 设备都连接到同一个 WLAN。我无法通过在192.168.8.103:5000
我的 android 设备的浏览器中输入我的 mac( )的 IP 地址来访问我的 Flask 网站。但是我可以通过进入192.168.8.103
我的 android 设备的浏览器从我的 Mac 上运行的 apache 服务器访问网页。我可以从我的手机访问 Flask 网络服务器吗?
我有一个带有域的服务器,例如https://my.site.com。但是当我启动 Flask 时,连接时域不起作用。有什么问题?
代码:
from flask import Flask, jsonify
import os
ASSETS_DIR = os.path.dirname(os.path.abspath(__file__))
app = Flask(__name__)
@app.route('/')
def index():
return 'Flask is running!'
if __name__ == '__main__':
context = ('server.crt', 'server.key')
app.run(debug=True, ssl_context=context, port=3030)
Run Code Online (Sandbox Code Playgroud)
并记录:
* Running on https://127.0.0.1:3030/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger pin code: 284-971-705
Run Code Online (Sandbox Code Playgroud)
我在浏览器中连接到https://my.site.com:3030,并且具有“永久加载”
我想在本地运行一个 dockerized Flask 服务器并访问我在其中定义的任何路由。设置重现我的问题:
应用程序
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World!'
Run Code Online (Sandbox Code Playgroud)
文件
from python:3.7-alpine
COPY app.py app.py
RUN pip install flask
CMD [ "flask", "run" ]
Run Code Online (Sandbox Code Playgroud)
构建这个容器工作正常。按照文档和一些深入的示例,运行它docker run -p 5000:5000 flask
应该可以解决问题。它启动容器并且看起来不错:
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Run Code Online (Sandbox Code Playgroud)
而docker ps
让我发现,端口映射也似乎工作: …
大家好我是Python Flask的新手。阅读完基本手册后,我尝试创建一个示例Flask应用程序,并在我的机器上成功完成了该工作。
我的代码(取自各种教程)如下:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def main():
return "Welcome!"
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud)
如您所知,此应用程序将打印“ Welcome!”。每当我点击http://127.0.0.1:5000/。但是,当我尝试通过使用系统的IP地址替换127.0.0.1从同一网络中的其他计算机访问应用程序时,出现“网络错误(tcp_error)连接被拒绝”错误
关于如何从另一台计算机访问Flask应用程序(在一台计算机上创建)的任何输入都将有所帮助