怎么if __name__ == "__main__":
办?
# Threading example
import time, thread
def myfunction(string, sleeptime, lock, *args):
while True:
lock.acquire()
time.sleep(sleeptime)
lock.release()
time.sleep(sleeptime)
if __name__ == "__main__":
lock = thread.allocate_lock()
thread.start_new_thread(myfunction, ("Thread #: 1", 2, lock))
thread.start_new_thread(myfunction, ("Thread #: 2", 2, lock))
Run Code Online (Sandbox Code Playgroud) 我在使用 Python 3.6 ( Flask==0.11.1
) 和gunicorn==19.9.0
. 我正在使用structlog==18.1.0
(用于 JSON 日志记录)并python-json-logger==0.1.9
在 Flask 应用程序内部注销各种单独运行良好的东西,即在没有 gunicorn 的情况下运行 Flask 应用程序时。但是当在 gunicorn 中运行 Flask 应用程序时,一些日志问题随机开始出现,即来自 gunicorn 和 Flask 应用程序内部的访问日志都丢失了。
记录事件的一个例子是
import structlog
def some_flask_endpoint():
logger = structlog.getLogger(__name__)
logger.info('This is an info event', additional_data='some additional data')
Run Code Online (Sandbox Code Playgroud)
这应该向类似于此的日志输出 JSON 消息
{"message": "This is an info event", "additional_data": "some additional data"}
Run Code Online (Sandbox Code Playgroud)
目前,这一切都是通过日志 FileConfig(gunicorn 和 Flask 应用程序都在使用)完成的,如下所示:
[loggers]
keys = root,gunicorn.error,gunicorn.access
[handlers]
keys=console,logfile
[formatters]
keys=json
[logger_root]
level=INFO
handlers=console,logfile
[logger_gunicorn.error]
level = INFO
handlers …
Run Code Online (Sandbox Code Playgroud)