我有一个要在AWS Lambda上运行的项目,但该项目已超过50MB的压缩限制。目前,压缩后的空间为128MB,带有虚拟环境的项目文件夹为623MB,其中包括(空间的顶级用户):
没有virtualenv
项目,则小于2MB。该requirements.txt
是:
click==6.7
cycler==0.10.0
ecdsa==0.13
Flask==0.12.2
Flask-Cors==3.0.3
future==0.16.0
itsdangerous==0.24
Jinja2==2.10
MarkupSafe==1.0
matplotlib==2.1.2
mpmath==1.0.0
numericalunits==1.19
numpy==1.14.0
pandas==0.22.0
pycryptodome==3.4.7
pyparsing==2.2.0
python-dateutil==2.6.1
python-dotenv==0.7.1
python-jose==2.0.2
pytz==2017.3
scipy==1.0.0
six==1.11.0
sympy==1.1.1
Werkzeug==0.14.1
xlrd==1.1.0
Run Code Online (Sandbox Code Playgroud)
我使用Zappa进行部署,因此我对整个基础架构的了解有限。我的理解是,某些库(很少)没有上载,因此例如numpy,该部分没有上载,并且使用了该环境中已经可用的Amazon版本。
我提出了以下工作流程(不将S3存储桶用于slim_handler
):
scipy.minimize
删除大多数内容并重新运行测试,以手动方式手动摇动scipypyminifier
要么:
compileall
以获取.pyc文件我遇到了问题slim_handler: true
,要么连接断开并且上传失败,要么发生了其他错误,并且在到S3的大约25%的上传中我得到了Could not connect to the endpoint URL
。出于这个问题的目的,我想将依赖关系降低到可管理的水平。
尽管如此,超过半数的依赖关系(主应用程序小于2MB)必须记录下来。
我的问题是:
我有一台服务器,上面运行着几个API。其中之一是users-DB
以下内容可归结为“ gunicorn”:
location /usersDB/ {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/projects/UsersDB-api/app.sock;
}
Run Code Online (Sandbox Code Playgroud)
除了当我尝试访问usersDB API的/ helloWorld路由并查看gunicorn.err的日志时,我看到:
GET /usersDB/helloWorld
Run Code Online (Sandbox Code Playgroud)
我希望看到:
GET /helloWorld
Run Code Online (Sandbox Code Playgroud)
当然,gunicorn返回404,这就是我在浏览器中看到的。我试过重写规则:
location /usersDB/ {
rewrite /usersDB/(.*) /$1 last;
include proxy_params;
proxy_pass http://unix:/home/ubuntu/projects/UsersDB-api/app.sock;
}
Run Code Online (Sandbox Code Playgroud)
但是上面的结果导致请求进入了/var/www/htmlhelloWorld
替代app.sock的方式。
我知道,如果您对proxy_pass使用url,则只需添加尾随/
,但是我不确定在使用sock文件的情况下该怎么做。
如何摆脱/usersDB/
nginx中所有路由现在包含的后缀?