首页 > 解决方案 > uswgi - 无法从 multiprocessing.semaphore_tracker 加载配置

问题描述

目前我正在将我的 Flask 应用程序部署到 Ubuntu 服务器 (AWS)。当我尝试启动 uwsgi 服务器并使用 journalctl 查看日志时,我注意到一种警告/错误。

我可以忽略它吗?我不知道如何解决它或它来自哪里。现在坚持了2天。谁能帮我?

错误:

 *** Operational MODE: preforking ***
Jan 04 15:27:11 ip-172-31-39-12 uwsgi[21781]: unable to load configuration from from multiprocessing.semaphore_tracker import main;main(10)

标签: pythonubuntunginxflaskuwsgi

解决方案


在我的情况下,这个错误是由于使用 uWSGI 2.0.17.1 和 Flask 1.0.2 和 scikit-learn 0.20.0。

在内部,scikit-learn 导入 joblib,它在导入时尝试生成信号量跟踪进程 (sklearn/externals/joblib/_multiprocessing_helpers.py)。

信号量跟踪过程是通过生成具有当前可执行文件名称的命令并附加"-c 'from multiprocessing.semaphore_tracker import main;main(fd)"来产生的。

当前可执行文件的名称应为“python”,但在使用 uWSGI 时并非如此。结果命令是“/usr/local/bin/uwsgi -c 'from multiprocessing.semaphore_tracker import main;main(fd)”,该命令失败并输出上述错误消息。

如本文所述,一种解决方法是设置环境变量 JOBLIB_MULTIPROCESSING=0。

请注意,在我的情况下,这样做的唯一后果是生成一个最终被清理的已失效的 uWSGI 进程。


推荐阅读