我试图在AWS上使用Elastic Beanstalk建立一个Flask网络应用。我已经按照教程进行了操作 此处 而这工作得很好。我现在想扩展Flask web应用,这工作很好,直到我的 import scipy.spatial as spatial
当这是我导入语句的一部分时,运行eb open就会超时。我收到
>>>> HTTP ERROR 504
即使使用 scipy 导入,在本地运行 webapp 也绝对正常,只是当我尝试部署到 beanstalk 时,它就不想工作了。以下是我的代码
import os
import requests
from bs4 import BeautifulSoup
import pandas as pd
import scipy.spatial as spatial ##### Removing this and everything works!
from flask import Flask
from flask_cors import CORS
from flask_restful import Resource, Api
from flask_jsonpify import jsonify
# print a nice greeting.
def say_hello(username = "World"):
df = pd.DataFrame({"a":[1,2,3]})
return '<p>Hello %s!</p>\n' % username
# some bits of text for the page.
header_text = '''
<html>\n<head> <title>EB Flask Test</title> </head>\n<body>'''
instructions = '''
<p><em>Hint</em>: This is a RESTful web service! Append a username
to the URL (for example: <code>/Thelonious</code>) to say hello to
someone specific.</p>\n'''
home_link = '<p><a href="/">Back</a></p>\n'
footer_text = '</body>\n</html>'
# EB looks for an 'application' callable by default.
application = Flask(__name__)
# add a rule for the index page.
application.add_url_rule('/', 'index', (lambda: header_text +
say_hello() + instructions + footer_text))
# add a rule when the page is accessed with a name appended to the site
# URL.
application.add_url_rule('/<username>', 'hello', (lambda username:
header_text + say_hello(username) + home_link + footer_text))
# run the app.
if __name__ == "__main__":
# Setting debug to True enables debug output. This line should be
# removed before deploying a production app.
application.debug = True
application.run()
我已经尝试将环境的命令超时时间从600秒增加到900秒,尽管超时错误发生在600秒过去之前。
对了,我不知道为什么会这样,但我更新了我的requirements.txt中的scipy版本,应用程序就像预期的那样工作了!我想知道为什么会这样。
最初我有
scipy==1.4.1
现在我有
scipy==1.2.3
我不知道为什么这能解决部署问题,尤其是1.4.1在本地完美运行的情况下。如果有人有什么想法,或者如果这是一个错误,我应该报告,这将是很好的知道!