我编写了一个Web应用程序,以使用在uWSGI服务器上运行的Python应用程序控制LED灯条。前端和后端组件似乎正常工作,但是使用uWSGI运行该程序时会出现问题,而不是使用Flask dev Web服务器时出现该问题,并且我不确定如何进行诊断。wsgi似乎有问题的代码的两个部分是python日志记录模块(因此,我很难诊断问题)和LED本身的操作。我在下面列出了我的配置文件,很高兴提供其他可能有用的信息。
尽管开发中涉及的所有文件都已包含在GitHub仓库中,但该代码并不易于安装在另一个系统上。这包括Python后端代码,HTML + CSS和其余的配置文件。预期的平台是在Raspberry Pi 3A +模型上运行的Raspbian Linux。
/etc/lights/lights.ini(uWSGI)
[uwsgi]
module = lights:app
chdir = /var/lights/
logto = /var/log/lights/lights.log
master = true
processes = 5
enable-threads = true
threads = 10
socket = lights.sock
chmod-socket = 666
vacuum = true
die-on-term = true
plugin = /usr/lib/uwsgi/plugins/python3_plugin.so
/ etc / nginx / sites-enabled / lights(nginx)
server {
listen 80;
server_name 192.168.1.79;
access_log /var/log/nginx/lights_access.log;
error_log /var/log/nginx/lights_error.log;
root /var/lights/;
location / {
include uwsgi_params;
uwsgi_pass unix:///var/lights/lights.sock;
}
}
def main():
logging.basicConfig(level=logging.INFO, format=logFormat)
application = app
app.run()
if __name__ == "__main__":
main()
日志记录问题似乎在这里。仅当程序作为主要Python脚本执行时才设置日志记录,而对于Python导入则不设置日志记录。UWSGI使用Python C API调用此函数,因此该main
方法将永远不会执行。
这也解释了为什么它与Flask开发服务器一起工作,因为您以Python脚本执行而不是导入模块。
要解决此问题,您只需将日志记录设置移至主模块级别,就可以了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句