当用gunicorn暴发户运行我的应用程序时,我得到:
TypeError: 'newline' is an invalid keyword argument for this function
但是,当我从命令行运行它时,我没有问题。
我看到过表明newline
应该在文件开头的解决方案,而不是csv.writer
。正如你所看到的,我确实在文件开头有它。
要重新创建:
my_app.py
保存到/ home / - 您的家 - / chmod u+x /home/--your home--/my_app.py
my_upstart.conf
保存到/ etc / init / my_upstart.conf
以替换您的主目录sudo service my_upstart start
curl localhost:5001/vis
-H"内容类型:text / csv" sudo cat /var/log/upstart/my_upstart.log
在my_upstart.log
中,您会看到上面提到的TypeError
my_app.py
#!/usr/bin/python3
from flask import Flask, request
app = Flask(__name__)
@app.route('/vis/', strict_slashes=False)
def vis():
with (open('~/test.csv', mode='w', newline='')) as f:
writer = csv.writer(f)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5001)
my_upstart.conf
description "Gunicorn config file for serving the Wellness app"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
setuid ubuntu
setgid ubuntu
script
cd /home/<your home>/
exec gunicorn --bind 0.0.0.0:5001 my_app:app
end script
答案 0 :(得分:1)
比较Python版本2和3的open
文档,您会注意到可以传递的参数有很多不同。特别是Python 2中没有参数newline
。
所以我的猜测是,当gunicorn运行时,它将获得一个版本2的Python可执行文件。
有关详细信息,请参阅Cannot get gunicorn to use Python 3。
答案 1 :(得分:0)
gunicorn正在使用python 2并且它是相应的分发包,而我正在使用python 3.按照以下步骤进行修复:
sudo pip3 install gunicorn
/usr/bin/gunicorn
中,
#!/usr/bin/python3
(而不是python
)和gunicorn --version
所说的匹配。