Внутренняя ошибка сервера при попытке Flask запустить скрипт Python - PullRequest
0 голосов
/ 16 января 2019

Я настроил базовую страницу Flask, index.html, чтобы запустить мой скрипт app.py. Структура каталогов - это папка myapp, содержащая app.py, папка шаблонов, содержащая 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 голосов
/ 16 января 2019

Вы должны поставить вывод ошибок в вопросе вместо комментариев. Это помогло бы другим людям ответить на ваш вопрос, так как не все читают комментарии.

Однако, исходя из ошибки, похоже, что вы не установили необходимые модули и пакеты для запуска приложения.

Вы импортировали их здесь:

@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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...