【问题标题】:Internal server error with Flask trying to run python scriptFlask 尝试运行 python 脚本的内部服务器错误
【发布时间】: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


【解决方案1】:

您应该将错误输出而不是 cmets 放在问题中。这将有助于其他人回答您的问题,因为并非每个人都通过 cmets。

但是,根据错误,您似乎没有安装运行应用程序所需的模块和包。

您已在此处导入它们:

@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

【讨论】:

  • 你能把你在markdown格式中的错误粘贴到这里吗@CandiceSmith
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-04
  • 2021-10-12
  • 2017-02-06
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
相关资源
最近更新 更多