我在Docker
中有一个Flask
应用程序,它在前面没有UWSGI
的情况下运行时正在登录docker logs
。现在我已经使用UWSGI
和下面的配置在Docker
中运行我的应用程序:
[uwsgi]
master = true
processes = 5
threads = 2
socket = 127.0.0.1:3031
chmod-socket = 664
stats=0.0.0.0:30310
chdir = /etc/fantas
uid = root
gid = root
wsgi-file=uwsgi_fantas.py
callable=app
vacuum = true
uwsgi_fantas.py
文件包含:
from fantas.fantas_app import FantasApp
app = FantasApp().setup()
setup
方法返回app
:
from flask_restful import Api
from fantas import app
class FantasApp(object):
def setup(self):
api = Api(app)
api.add_resource(Token, '/users')
return app
最后,启动Flask
框架的部分位于项目根目录中的__init__.py
中:
from flask import Flask
import logging
app = Flask(__name__)
s_handler = logging.StreamHandler()
s_handler.setLevel(logging.DEBUG)
app.logger.addHandler(s_handler)
由于UWSGI
直接与app
对象一起工作,我在__init__.py
中配置了logger,但问题是它在运行时不会将任何内容登录到Docker
中,它只是记录UWSGI
请求。
app.logger配置过程中有什么问题?
问题已经解决,但现在日志被复制了!
编辑-1:
我设置了app.logger.setLevel(logging.DEBUG)
,似乎Flask
成功地登录到Docker
。奇怪的是它记录了3次!我删除了所有记录器配置和处理程序,只使用了:
app.logger.setLevel(logging.DEBUG)
但现在它记录了两次:
proj_fantas.1.huagnqqpzo1n@linuxkit-025000000001 | [2018-07-13 07:02:38,008] DEBUG in token: [Token] authenticating user...
proj_fantas.1.huagnqqpzo1n@linuxkit-025000000001 | DEBUG:flask.app:[Token] authenticating user...
为什么会这样?
编辑-2:
app.logger.handlers
的输出是[<logging.StreamHandler object at 0x7f0f430ca8d0>]
。它只显示了我先前初始化的StreamHandler,没有更多。
编辑-3:
ps -ef
命令在Docker
内的输出:
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 15:26 ? 00:00:00 uwsgi uwsgi_coconuty.ini
root 10 1 0 15:26 ? 00:00:00 uwsgi uwsgi_coconuty.ini
root 12 1 0 15:26 ? 00:00:00 uwsgi uwsgi_coconuty.ini
root 13 1 0 15:26 ? 00:00:00 uwsgi uwsgi_coconuty.ini
root 15 1 0 15:26 ? 00:00:00 uwsgi uwsgi_coconuty.ini
root 16 1 0 15:26 ? 00:00:00 uwsgi uwsgi_coconuty.ini
root 20 0 0 15:27 pts/0 00:00:00 /bin/bash
root 112 20 0 15:28 pts/0 00:00:00 ps -ef
没有其他进程在Docker
内运行。
目前没有回答
相关问题 更多 >
编程相关推荐