#python #flask
#python #flask
Вопрос:
Использование Flask на веб-сервере apache на CentOS (ClearOS).
Запускаю веб-проект APP FLASK, и в этом файле я хочу запустить другой файл python с помощью команды: os.system («python3 module.py «), что становится проблемой, потому что оно возвращает кодировку ANSI_X3.4-1968.
В моем приложении я хотел бы запустить файл как cron, поэтому я просто открою файл и запущу, как показано ниже.
@app.route('/crontab')
def do_crontab():
crontab_arg = request.args.get('cron')
app_root = os.path.dirname(os.path.abspath(__file__))
crontab_run = "python3 " app_root "/module.py " crontab_arg
os.system(crontab_run)
return "Done"
В моей локальной среде с Flask это работает и возвращает utf-8.
В файле «module.py «Я использую команду: sys.stdout.encoding, и это то, что дает мне результаты.
Я использую тот же python3.8 и тот же env. Таким образом, разница заключается в разных ОС и Apache вместо Werkzeug.
На моем сервере:
[root@server ~]# locale
LANG=sv_SE.UTF-8
LC_CTYPE="sv_SE.UTF-8"
LC_NUMERIC="sv_SE.UTF-8"
LC_TIME="sv_SE.UTF-8"
LC_COLLATE="sv_SE.UTF-8"
LC_MONETARY="sv_SE.UTF-8"
LC_MESSAGES="sv_SE.UTF-8"
LC_PAPER="sv_SE.UTF-8"
LC_NAME="sv_SE.UTF-8"
LC_ADDRESS="sv_SE.UTF-8"
LC_TELEPHONE="sv_SE.UTF-8"
LC_MEASUREMENT="sv_SE.UTF-8"
LC_IDENTIFICATION="sv_SE.UTF-8"
LC_ALL=sv_SE.UTF-8
У кого-нибудь есть идеи?
Комментарии:
1. Можете ли вы поделиться своей конфигурацией Apache? Я полагаю, вы используете mod_wsgi? Вы
/etc/apache2/envvars
вообще редактировали?2. Спасибо за быстрый ответ. 1. lyron.gyllenwaldt.com/httpd.conf (конфигурационный файл apache) 2. Используя mod_wsgi, я не редактировал никаких envvars …. используя ClearOS (построенный на CentOS). Более или менее следовал руководству: dev.to/sm0ke /…
3. Ах, Apache не обязательно использует системный язык по умолчанию. Попробуйте раскомментировать последнюю строку
/etc/apache2/envvars
и перезапустить Apache.4. Это сделало свое дело 🙂 Большое спасибо! =)
5. Отлично, я добавлю это в качестве ответа 👍🏻
Ответ №1:
Apache не обязательно использует системный язык по умолчанию.
Попробуйте раскомментировать последнюю строку в /etc/apache2/envvars и перезапустить Apache. Это заставит Apache использовать ваш системный язык.