【发布时间】:2019-01-16 04:53:23
【问题描述】:
我已经设置了一个基本的 Flask 页面 index.html 来运行我的 app.py 脚本。目录结构是包含 app.py 的 myapp 文件夹、包含 index.html 的 templates 文件夹和一个 venv 文件夹。我正在尝试让我的 app.py 脚本(它下载一个 excel 文件,并且它在 ipython 中自行运行时工作)在单击 GO 按钮时运行。我可以很容易地让烧瓶在本地主机上运行,并且 index.html 出现在按钮上,但是当我单击它时,我得到 - “内部服务器错误服务器遇到内部错误并且无法完成您的请求。服务器过载或者应用程序中有错误。”
我已经尝试了很长时间,并查看了其他类似的问题,但无济于事。 app.py 的代码如下:
#!/usr/bin/env python
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/app', methods=['GET', 'POST'])
def app():
import selenium
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.chrome.options import Options
import lxml
import time
import datetime
import pandas as pd
from bs4 import BeautifulSoup
options = Options()
options.headless = True
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://widget.sentryd.com/widget/#/15490A29-95E3-4296-999E-28D0B35E0D12/AUD-USD/4')
time.sleep(10)
soup1 = BeautifulSoup(driver.page_source, 'lxml')
table1 = soup1.find_all('table')
df1 = pd.read_html(str(table1[1]), header=0)
df1[0].columns = ['Delta_put', 'Price_put', 'Strike', 'Price_call', 'Delta_call', 'Vol', 'Skew', 'Vega']
df1[0].drop(0, inplace=True)
writer = pd.ExcelWriter('options_{}.xlsx'.format(pd.datetime.today().strftime('%d %b %y')), engine='xlsxwriter')
df1[0].to_excel(writer, 'Sheet1')
writer.save()
return 'Downloading...'
if __name__ == '__main__':
app.run()
index.html 的代码是
<form action="/app" method="POST">
<input type="submit" value="GO">
</form>
任何提示将不胜感激。谢谢
【问题讨论】:
-
检查运行flask的控制台是否有错误信息。
-
app()函数上的缩进真的像这样吗?您还有一个变量app和一个函数app()。 -
不缩进,我只是使用 autopep8,它似乎工作正常
-
您确定当您单击 GO 按钮时,服务器已经启动并运行了吗?您可以在不单击 GO 按钮的情况下从浏览器导航到 /app 吗?
-
你是对的,由于某种原因,我现在不能复制粘贴时的代码搞砸了。我在工作时得到的原始错误代码是:
标签: python python-3.x flask