如何修复 Flask ngrok 中的托管地址
Posted
技术标签:
【中文标题】如何修复 Flask ngrok 中的托管地址【英文标题】:How to fix the hosting address in Flask ngrok 【发布时间】:2021-11-30 07:38:47 【问题描述】:我通过flask ngrok将我计算机上的一个API用作服务器,它会生成一个用户可以远程使用我的API的地址,但是每次我运行我的api时,它都会生成一个随机地址,如下所示:http://1b1c-187- 121-198-62.ngrok.io
如何生成固定地址?
这是我的主要代码:
from flask_ngrok import run_with_ngrok
from flask import Flask, flash, request, redirect, url_for, render_template
import os
from werkzeug.utils import secure_filename
from PIL import Image, ImageOps
#app = Flask(__name__)
app = Flask(__name__, template_folder='./templates')
run_with_ngrok(app) #starts ngrok when the app is run
UPLOAD_FOLDER = './static/'
app.secret_key = "secret key"
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg', 'gif'])
@app.route('/')
def index():
return render_template('index.html')
########################################
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/', methods=['POST'])
def upload_image():
if 'file' not in request.files:
flash('No file part')
#return redirect(request.url)
file = request.files['file']
if file.filename == '':
flash('No image selected for uploading')
#return redirect(request.url)
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
#file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
file.save(os.path.join(app.config['UPLOAD_FOLDER'], 'foto.jpeg'))
#### Padronizando tamanho de foto
basewidth = 400
# My image is a 200x374 jpeg that is 102kb large
foo = Image.open('./static/foto.jpeg')
wpercent = (basewidth/float(foo.size[0]))
# I downsize the image with an ANTIALIAS filter (gives the highest quality)
hsize = int((float(foo.size[1])*float(wpercent)))
foo = foo.resize((basewidth,hsize), Image.ANTIALIAS)
foo = ImageOps.exif_transpose(foo)
foo.save("./static/fase1/foto.jpeg",optimize=True,quality=95)
#foo.save("./static/foto2.jpeg", optimize=True,quality=50)
#########
#### Meu código
#os.remove('./static/foto.png')
#os.remove('./static/uploads/foto2.png')
os.system('python evala.py --trained_model=./weights/yolact_plus_resnet50_meat_3700_495900.pth --config=yolact_resnet50_meat_config --score_threshold=0.8 --top_k=100 --images=./static/fase1:./static/mask')
####
# get directory path where you want to save the images
#print('upload_image filename: ' + filename)
flash('Image successfully uploaded and displayed below')
return render_template('index.html', filename=filename)
else:
flash('Allowed image types are - png, jpg, jpeg, gif')
return redirect(request.url)
@app.route('/display/<filename>')
def display_image(filename):
return redirect(url_for('static', filename='uploads/foto2.jpeg'), code=301)
app.run()
OBS:我的代码不起作用,它只是为了展示我的代码的基础。
【问题讨论】:
我认为您必须为此付费。很久以前我也遇到过同样的问题,我通过从 pythonanywhere.com 获取一个静态端点来解决它,并且每当 ngrok 服务器重新启动时,它只会告诉 python Anywhere 服务器新的端点。你可以在这里查看github.com/epsi95/Sharefi 自定义域名需要付费计划。 但是我将我的 PC 用作服务器,我只需要一个固定地址...但是谢谢您的时间。 =) 我建议使用pyngrok 而不是flask-ngrok
,因为它为您提供了更多的灵活性。其他人认为您要求的内容需要付费计划是正确的,但是抓住从connect 返回的public_url
,您可以自动化您的工作流程,这样更改的 URL 就不会成为您的应用程序的问题。
【参考方案1】:
正如其他人之前提到的,这需要一个paid plan,它将为您提供自定义域和保留域。
对于免费替代方案,您可以使用 localtunnel 请求子域 (-s
)。
【讨论】:
以上是关于如何修复 Flask ngrok 中的托管地址的主要内容,如果未能解决你的问题,请参考以下文章
如何使用弹性 beantalk 和 aws 修复 Flask 应用程序中的内部服务器错误
如何修复“[OData Source [56]] 错误:无法从运行时连接管理器获取托管连接。” SSIS中的错误?
如何使用 flask-cors 库修复 python flask cors 问题