uWSGI / Emperor: UnicodeEncodeError: 'ascii' codec can't encode character
uWSGI / Emperor: UnicodeEncodeError: 'ascii' codec can't encode character
我在 uwsgi/emeror/nginx 服务器上的编码有很大问题。
我的应用程序开发为批量 excel 文件处理。
我使用最新版本的 flask 和 flask-extensions 并使用 flask-excel。
我的应用 运行 在 Digital Ocean / Ubuntu 服务器上,我的配置文件是:
/etc/init/uwsgi.conf
description "uWSGI"
start on runlevel [2345]
stop on runlevel [06]
respawn
env UWSGI=/home/lukas/www/abissk/venv/bin/uwsgi
env LOGTO=/home/lukas/logs/abissk/emperor.log
exec $UWSGI --master --emperor /etc/uwsgi/vassals --die-on-term --uid www-data --gid www-data --logto $LOGTO
/etc/uwsgi/vassals/abissk_uwsgi.ini
[uwsgi]
plugins = python
#pcre = True
#application's base folder
base = /home/lukas/www/abissk/
#enable-threads = true
#python module to import
app = wsgi
module = %(app)
home = %(base)venv
pythonpath = %(base)
#socket file's location
socket = /home/lukas/www/abissk/%n.sock
#permissions for the socket file
chmod-socket = 644
#the variable that holds a flask application inside the module imported at line #6
callable = app
#location of log files
logto = /home/lukas/logs/abissk/%n.log
/home/lukas/www/abissk/wsgi.py
# -*- coding: utf-8 *-*
from app.app import create_app
from app.settings import ProdConfig
app = create_app(config_object=ProdConfig)
/etc/nginx/sites-enabled/abissk_nginx
server {
listen 80;
server_name benela.abis.sk;
charset utf-8;
client_max_body_size 75M;
location / { try_files $uri @yourapplication; }
location @yourapplication {
include uwsgi_params;
uwsgi_pass unix:/home/lukas/www/abissk/abissk_uwsgi.sock;
}
}
这是我的问题:
使用命令启动应用程序时:
~/www/abissk/venv/bin/uwsgi --ini /etc/uwsgi/vassals/abissk_uwsgi.ini
并上传 excel 文件一切正常但是
当使用 emperor 使用完全相同的配置文件(在 /etc/init/uwsgi.conf 中)启动相同的应用程序时,应用程序工作正常,但是当上传 excel 文件进行批处理时,我只看到消息:“ 502 Bad Gateway”,在我的日志中是:
UnicodeEncodeError: 'ascii' codec can't encode character '\xfd' in position 31: ordinal not in range(128)
我尝试使用 apt-get / pip3 install 安装 uwsgi 并且场景是相同的:当 运行 应用程序直接没有 emperor 时,一切正常;当 运行 应用程序与 emperor(具有相同配置)时,每次上传 excel 文件到我的应用程序都以崩溃结束:/
感谢您的回答
将以下行添加到您的 abissk_uwsgi.ini 文件以强制 uwsgi 使用 UTF-8。
env LANG=en_US.utf8
env LC_ALL=en_US.UTF-8
env LC_LANG=en_US.UTF-8
对于俄语,请在 uwsgi.ini
中添加
env = LANG=ru_RU.utf8
env = LC_ALL=ru_RU.UTF-8
env = LC_LANG=ru_RU.UTF-8
添加到uwsgi.ini
:
env = LANG=en_US.UTF-8
只有这种格式对我有帮助
None 的变量 LANG
、LC_ALL
、LC_LANG
帮助了我。
我修复了错误,只是将其添加到 uwsgi.ini:
env = PYTHONIOENCODING=UTF-8
我在 uwsgi/emeror/nginx 服务器上的编码有很大问题。 我的应用程序开发为批量 excel 文件处理。
我使用最新版本的 flask 和 flask-extensions 并使用 flask-excel。
我的应用 运行 在 Digital Ocean / Ubuntu 服务器上,我的配置文件是:
/etc/init/uwsgi.conf
description "uWSGI"
start on runlevel [2345]
stop on runlevel [06]
respawn
env UWSGI=/home/lukas/www/abissk/venv/bin/uwsgi
env LOGTO=/home/lukas/logs/abissk/emperor.log
exec $UWSGI --master --emperor /etc/uwsgi/vassals --die-on-term --uid www-data --gid www-data --logto $LOGTO
/etc/uwsgi/vassals/abissk_uwsgi.ini
[uwsgi]
plugins = python
#pcre = True
#application's base folder
base = /home/lukas/www/abissk/
#enable-threads = true
#python module to import
app = wsgi
module = %(app)
home = %(base)venv
pythonpath = %(base)
#socket file's location
socket = /home/lukas/www/abissk/%n.sock
#permissions for the socket file
chmod-socket = 644
#the variable that holds a flask application inside the module imported at line #6
callable = app
#location of log files
logto = /home/lukas/logs/abissk/%n.log
/home/lukas/www/abissk/wsgi.py
# -*- coding: utf-8 *-*
from app.app import create_app
from app.settings import ProdConfig
app = create_app(config_object=ProdConfig)
/etc/nginx/sites-enabled/abissk_nginx
server {
listen 80;
server_name benela.abis.sk;
charset utf-8;
client_max_body_size 75M;
location / { try_files $uri @yourapplication; }
location @yourapplication {
include uwsgi_params;
uwsgi_pass unix:/home/lukas/www/abissk/abissk_uwsgi.sock;
}
}
这是我的问题: 使用命令启动应用程序时:
~/www/abissk/venv/bin/uwsgi --ini /etc/uwsgi/vassals/abissk_uwsgi.ini
并上传 excel 文件一切正常但是
当使用 emperor 使用完全相同的配置文件(在 /etc/init/uwsgi.conf 中)启动相同的应用程序时,应用程序工作正常,但是当上传 excel 文件进行批处理时,我只看到消息:“ 502 Bad Gateway”,在我的日志中是:
UnicodeEncodeError: 'ascii' codec can't encode character '\xfd' in position 31: ordinal not in range(128)
我尝试使用 apt-get / pip3 install 安装 uwsgi 并且场景是相同的:当 运行 应用程序直接没有 emperor 时,一切正常;当 运行 应用程序与 emperor(具有相同配置)时,每次上传 excel 文件到我的应用程序都以崩溃结束:/
感谢您的回答
将以下行添加到您的 abissk_uwsgi.ini 文件以强制 uwsgi 使用 UTF-8。
env LANG=en_US.utf8
env LC_ALL=en_US.UTF-8
env LC_LANG=en_US.UTF-8
对于俄语,请在 uwsgi.ini
中添加env = LANG=ru_RU.utf8
env = LC_ALL=ru_RU.UTF-8
env = LC_LANG=ru_RU.UTF-8
添加到uwsgi.ini
:
env = LANG=en_US.UTF-8
只有这种格式对我有帮助
None 的变量 LANG
、LC_ALL
、LC_LANG
帮助了我。
我修复了错误,只是将其添加到 uwsgi.ini:
env = PYTHONIOENCODING=UTF-8