2015-09-08 5 views
5

एन्कोडिंग नहीं कर सकता है मुझे uwsgi/emeror/nginx सर्वर पर एन्कोडिंग के साथ बड़ी समस्या है। मेरा ऐप एक्सेल फाइल प्रोसेसिंग बैच करने के लिए विकसित किया गया है।uWSGI/सम्राट: यूनिकोड एन्कोडर त्रुटि: 'ascii' कोडेक चरित्र

मैं नवीनतम संस्करण फ्लास्क और फ्लास्क-एक्सटेंशन का उपयोग करता हूं और फ्लास्क-एक्सेल का उपयोग करता हूं।

मेरा ऐप डिजिटल महासागर/Ubuntu सर्वर पर चलाता है और मेरे config फ़ाइलें हैं:

/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/साइटों सक्षम/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 

और एक्सेल फाइल अपलोड सभी महान काम करता है लेकिन

सम्राट के साथ कुल समान कॉन्फ़िगरेशन फ़ाइलों (/etc/init/uwsgi.conf में) के साथ समान अनुप्रयोग शुरू करते हैं, एप्लिकेशन ठीक काम करता है, लेकिन बैच प्रोसेसिंग में एक्सेल फ़ाइल अपलोड करते समय, मुझे केवल संदेश दिखाई देता है: "502 खराब गेटवे" और मेरे लॉग मैं रों:

UnicodeEncodeError: 'ascii' codec can't encode character '\xfd' in position 31: ordinal not in range(128) 

मैं था की कोशिश के साथ uwsgi स्थापित apt-get/pip3 स्थापित करें और परिदृश्य में एक ही है: जब सीधे सम्राट के बिना अनुप्रयोग चलाने, सभी ठीक काम करता है; किसी भी उत्तर के लिए/

धन्यवाद

उत्तर

4

अपने 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" 
+0

धन्यवाद:

मैं बग केवल uwsgi.ini को यह जोड़ने तय की। मुझे इसे env = LANG = en_US.utf8 बनाने की आवश्यकता है जैसा कि –

0
रूसी भाषा के लिए

uwsgi.ini

env = LANG=ru_RU.utf8 
env = LC_ALL=ru_RU.UTF-8 
env = LC_LANG=ru_RU.UTF-8 
4

में इस ऐड uwsgi.ini में जोड़ें:

env = LANG=en_US.UTF-8 

केवल इस प्रारूप मेरे लिए मदद की

+1

सुझाया गया है, इसे किसी भी यूटीएफ -8 एन्कोडिंग पर सेट किया जा सकता है और शायद सिस्टम डिफ़ॉल्ट लोकेल को सेट करने के लिए सबसे अच्छा सेट है। उदाहरण के लिए मैंने 'env = LANG = en_AU का उपयोग किया।यूटीएफ 8' जैसा कि मेरा सिस्टम डिफ़ॉल्ट लोकेल '/ etc/default/locale' में सेट है –

1

चर में से कोई भी LANG, LC_ALL, LC_LANG हेल्प डी मुझे

env = PYTHONIOENCODING=UTF-8

संबंधित मुद्दे

 संबंधित मुद्दे