簡體   English   中英

在 Apache 中的 Flask 上編碼運行 Python 文件的問題

[英]Problem with encoding running Python file on flask in Apache

在 CentOS (ClearOS) 上的 apache 網絡服務器上使用 Flask。

運行一個 APP FLASK web 項目並在該文件中我想使用命令運行另一個 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 和相同的環境。 所以區別在於不同的操作系統和 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

任何人有任何想法?

默認情況下,Apache 不一定使用系統區域設置。

嘗試取消注釋 /etc/apache2/envvars 中的最后一行並重新啟動 Apache。 這將使 Apache 使用您的系統區域設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM