Flask尝试运行python脚本时发生内部服务器错误

时间:2019-01-16 04:53:24

标签: python python-3.x flask

我已经建立了一个基本的Flask页面index.html来运行我的app.py脚本。目录结构是包含app.py的myapp文件夹,包含index.html的模板文件夹和venv文件夹。我试图让我的app.py脚本(下载一个excel文件,当它在ipython中单独运行时可以运行)在单击GO按钮时运行。我可以轻松地使烧瓶在localhost上运行,并且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>

任何提示将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

您应该将错误输出而不是注释放在问题中。这样可以帮助其他人回答您的问题,因为不是每个人都在评论。

但是,基于该错误,您似乎没有安装运行应用程序所需的模块和软件包。

您已将它们导入此处:

@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

您应该使用首选的安装方法来安装这些模块。 您可以使用pip来安装它们。

因此,请转到项目的环境,打开控制台并安装它们。

pip install beautifulsoup4
pip install selenium
pip install pandas
pip install lxml