婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python 解決logging功能使用過程中遇到的一個問題

Python 解決logging功能使用過程中遇到的一個問題

熱門標簽:淮安呼叫中心外呼系統如何 電話外呼系統招商代理 打印谷歌地圖標注 蘇州人工外呼系統軟件 看懂地圖標注方法 廣東旅游地圖標注 京華圖書館地圖標注 佛山通用400電話申請 電話機器人貸款詐騙

現象:

生產中心進行拷機任務下了300個任務,過了一陣時間后發現任務不再被調度起來,查看后臺日志發現日志輸出停在某個時間點。

分析:

1、首先確認進程存在并沒有dead。

2、然后用strace –p看了一下進程,發現進程卡在futex調用上面,應該是在鎖操作上面出問題了。

3、用gdb attach進程ID,用py-bt查看一下堆棧,發現堆棧的信息大致為:sig_handler(某個信號處理函數)->auroralogger(自定義的日志函數)->logging(python的logging模塊)->threading.acquire(獲取鎖)。從gdb的bt信息基本驗證了上面的猜想,應該是出現了死鎖。

4、Python的logging模塊本身肯定不會有死鎖的這種bug有可能出問題的就是我們的使用方式,看python中logging模塊的doc,發現有一個有一個Thread Safety的章節,內容很簡單但是也一下就解釋了我遇到的這個問題,內容如下:

The logging module is intended to be thread-safe without any special work needing to be done by its clients. It achieves this though using threading locks; there is one lock to serialize access to the module's shared data, and each handler also creates a lock to serialize access to its underlying I/O.

If you are implementing asynchronous signal handlers using the signal module, you may not be able to use logging from within such handlers. This is because lock implementations in the threading module are not always re-entrant, and so cannot be invoked from such signal handlers.

第一部分是說logging是線程安全的,通過threading的lock對公用的數據進行了加鎖。

第二部分特意提到了在異步的信號處理函數中不能使用logging模塊,因為threading的lock機制是不支持重入的。

這樣就解釋了上面我遇到的死鎖問題,因為我在信號處理函數中調用了不可以重入的logging模塊。

線程安全和可重入:

從上面的logging模塊來看線程安全和可重入不是等價的,那么這兩個概念之間有什么聯系、區別呢?

1、可重入函數:從字面意思來理解就是這個函數可以重復調用,函數被多個線程亂序執行甚至交錯執行都能保證函數的輸出和函數單獨被執行一次的輸出一致。也就是說函數的輸出只決定于輸入。

線程安全函數:函數可以被多個線程調用,并且保證不會引用到錯誤的或者臟的數據。線程安全的函數輸出不僅僅依賴于輸入還可能依賴于被調用時的順序。

2、可重入函數和線程安全函數之間有一個最大的差異是:是否是異步信號安全??芍厝牒瘮翟诋惒叫盘柼幚砗瘮抵锌梢员话踩{用,而線程安全函數不保證可以在異步信號處理函數中被安全調用。

上面我們遇到的loggin模塊就是非異步信號安全的,在主線程中我們正在使用log函數而log函數調用了threading.lock來獲取到了鎖,此時一個異步信號產生程序跳轉到信號處理函數中,信號處理函數又正好調用了log函數,因為前一個被調用的log函數還未釋放鎖,最后就形成了一個死鎖。

1、可重入函數必然是線程安全函數和異步信號安全函數,線程安全函數不一定是可重入函數。

總結:

異步信號處理函數中一定要盡可能的功能簡單并且不能調用不可重入的函數。

Python loggin模塊是線程安全但是是不可重入的。

補充:Python—logging模塊使用教程

簡單用法

日志等級

級別 何時使用
DEBUG 細節信息,僅當診斷問題時適用。
INFO 確認程序按預期運行
WARNING 表明有已經或即將發生的意外(例如:磁盤空間不足)。程序仍按預期進行
ERROR 由于嚴重的問題,程序的某些功能已經不能正常執行
CRITICAL 嚴重的錯誤,表明程序已不能繼續執行

控制臺輸出日志

import logging
logging.warning('Watch out!')  
logging.info('I told you so') 

將日志保存到文件并且設置時間和輸出格式

import logging
# 保存文件為example.log,記錄等級為DEBUG,即只記錄DENBUG及以上的日志
# 輸出格式為 2019-19-06 18:47:06 - WARNING - And this, too
logging.basicConfig(
  filename='example.log',
  filemode='w',
  level=logging.DEBUG,
  format='%(asctime)s - %(levelname)s - %(message)s',
  datefmt='%Y-%d-%d %H:%M:%S'
)
logging.debug('This message should go to the log file')
logging.info('So shoul this')
logging.warning('And this, too')

參數解釋

filename日志文件路徑

filemode記錄日志文件的模式,w為每次啟動程序都創建一個全新的文件記錄, a表示追加到文件末尾, 默認為a

level記錄日志的等級

format日志輸出的格式

datefmt日志輸出時間的格式

使用配置文件配置日志

[loggers]
# 配置日志對象名, 默認為root
keys=root, poj
[handlers]
# 日志配置名對象名
keys=writeFileHandlers
[formatters]
# 日志輸出格式對象名
keys=writeFileFormatters
[logger_root]
level=DEBUG
handlers=writeFileHandlers
[logger_poj]
level=DEBUG
handlers=writeFileHandlers
qualname=writeFileFormatters
propagate=0
[logger_leetcode]
level=DEBUG
handlers=writeFileHandlers
qualname=writeFileFormatters
propagate=0
[handler_writeFileHandlers]
# 設置writeFileHandlers對象的配置
class=FileHandler
level=DEBUG
formatter=writeFileFormatters
# 記錄在文件中,以追加的形式
args=("demo.log", "a")
[formatter_writeFileFormatters]
設置writeFileHandlers對象的輸出配置
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=%Y-%d-%m %H:%M:%S

使用配置文件

import logging.config
# 加載配置文件
logging.config.fileConfig('logging.conf')
# 獲取日志對象名為poj的
logger = logging.getLogger("poj")
logger.debug('This message should go to the log file')
logger.info('So shoul this')
logger.warning('And this, too')

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Python日志模塊logging簡介
  • Python接口自動化淺析logging封裝及實戰操作
  • Python基礎之logging模塊知識總結
  • Python的logging模塊基本用法
  • Python logging簡介詳解

標簽:衡水 呼和浩特 江蘇 中山 畢節 湖州 股票 駐馬店

巨人網絡通訊聲明:本文標題《Python 解決logging功能使用過程中遇到的一個問題》,本文關鍵詞  Python,解決,logging,功能,使用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python 解決logging功能使用過程中遇到的一個問題》相關的同類信息!
  • 本頁收集關于Python 解決logging功能使用過程中遇到的一個問題的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    紧缚奴在线一区二区三区| 久久精品人人做人人爽人人| 国产成人综合亚洲网站| 久久99九九99精品| 经典三级在线一区| 国产高清精品在线| 成人一级视频在线观看| 国产成人精品aa毛片| 成人性生交大片| 91欧美一区二区| 欧美午夜理伦三级在线观看| 欧美日韩在线精品一区二区三区激情 | 久久综合给合久久狠狠狠97色69| 欧美日韩亚洲综合一区二区三区| 欧美在线短视频| 欧美日韩国产一级片| 欧美人与禽zozo性伦| 欧美一区二区大片| xf在线a精品一区二区视频网站| 久久伊人中文字幕| 欧美综合天天夜夜久久| 精品一区二区三区欧美| 青青草国产精品97视觉盛宴| 国产在线精品一区在线观看麻豆| 国产精品自拍在线| 91麻豆精品在线观看| 91精品国产乱| 国产精品理伦片| 亚洲成av人片在www色猫咪| 青青国产91久久久久久| 国产99久久久国产精品潘金| 日本电影亚洲天堂一区| 欧美成va人片在线观看| 国产精品―色哟哟| 男人操女人的视频在线观看欧美| 高清成人免费视频| 欧美巨大另类极品videosbest| 日本一区二区三级电影在线观看| 亚洲综合一区二区| 国产精品亚洲一区二区三区在线 | 国产精品久久久久一区| 国产一区中文字幕| 99久久久精品| 日韩精品在线一区| 亚洲伦理在线精品| 国产suv精品一区二区三区| 欧美三级中文字| 久久久.com| 麻豆精品精品国产自在97香蕉| 亚洲专区一二三| 欧美主播一区二区三区| 强制捆绑调教一区二区| 久久在线免费观看| 9色porny自拍视频一区二区| 亚洲免费在线观看| 欧美一区二区网站| 国产99精品视频| 一区二区三区高清在线| 精品久久久久久久久久久久久久久| 国产最新精品免费| 一区二区三区四区高清精品免费观看| 欧美一区二区精品久久911| 国产不卡视频在线观看| 亚洲国产精品久久久久秋霞影院 | 国产精品996| 亚洲素人一区二区| 日韩一区二区三区免费看| 国产成人免费av在线| 亚洲永久精品国产| 国产欧美日产一区| 6080亚洲精品一区二区| 97久久超碰国产精品| 喷白浆一区二区| 亚洲欧美在线观看| 欧美精品一区二区在线播放| 91小视频在线| 欧美视频一区二区三区在线观看| 久99久精品视频免费观看| 亚洲激情男女视频| 色综合激情久久| 老司机精品视频线观看86| 国产成人免费网站| 亚洲午夜免费电影| 国产成a人无v码亚洲福利| 国内精品视频666| 26uuu色噜噜精品一区二区| 久久99精品国产麻豆婷婷 | 久久在线免费观看| 国产成人av福利| 中文字幕一区二区不卡| 在线欧美日韩国产| 青青草国产精品亚洲专区无| 久久综合av免费| 成年人国产精品| 亚洲午夜一二三区视频| 日韩欧美视频在线| 成人免费视频app| 亚洲国产视频直播| 久久亚洲精华国产精华液 | 中文字幕一区免费在线观看| jizzjizzjizz欧美| 亚洲成人一二三| 欧美精品一区二区三区在线 | 免费久久精品视频| 国产区在线观看成人精品| 99久久免费精品高清特色大片| 亚洲图片有声小说| 久久精品欧美一区二区三区麻豆 | 日韩三级电影网址| 93久久精品日日躁夜夜躁欧美| 午夜精品123| 国产精品网站在线播放| 国产亚洲人成网站| 欧美在线综合视频| 福利电影一区二区| 亚洲va欧美va人人爽午夜| 久久九九久精品国产免费直播| 91看片淫黄大片一级在线观看| 日本欧美一区二区三区| 中文字幕一区三区| 久久久久久电影| 欧美电影影音先锋| 97se亚洲国产综合自在线观| 精品一区二区国语对白| 亚洲成av人在线观看| 中文久久乱码一区二区| 精品成人一区二区| 欧美男男青年gay1069videost | 成人涩涩免费视频| 久久精品99久久久| 日韩中文字幕91| 亚洲女同女同女同女同女同69| 久久综合色之久久综合| 宅男在线国产精品| 欧美日韩日日骚| 欧美综合亚洲图片综合区| 99精品久久免费看蜜臀剧情介绍| 精品亚洲免费视频| 蜜桃视频一区二区三区| 亚洲国产成人精品视频| 亚洲视频一区在线| 亚洲欧美激情在线| 亚洲乱码精品一二三四区日韩在线| 欧美国产精品v| 国产欧美视频一区二区三区| 精品久久久久久久人人人人传媒| 欧美一级一区二区| 91精品久久久久久久久99蜜臂| 欧美探花视频资源| 欧美日韩精品一区二区天天拍小说| 94-欧美-setu| 欧美影院精品一区| 欧美日韩一区二区三区高清| 欧美日韩免费一区二区三区视频| 欧美在线一二三| 91精品福利在线一区二区三区| 欧美一二三在线| 久久久亚洲精品石原莉奈| 久久亚洲一区二区三区四区| 国产亚洲午夜高清国产拍精品| 国产清纯美女被跳蛋高潮一区二区久久w | 欧美猛男gaygay网站| 这里只有精品电影| 精品国产污网站| 久久久久久一二三区| 国产精品福利av| 亚洲国产一区视频| 久久99国产精品尤物| 成人性视频网站| 欧美色综合天天久久综合精品| 欧美一级高清片| 久久精品夜色噜噜亚洲aⅴ| 中文字幕一区二区在线观看| 亚洲综合色婷婷| 久久99热这里只有精品| 成人av在线资源网站| 欧美无乱码久久久免费午夜一区 | 在线视频观看一区| 日韩片之四级片| 中文字幕在线一区| 婷婷成人激情在线网| 国产真实乱对白精彩久久| 99精品偷自拍| 日韩欧美不卡一区| 亚洲天堂精品视频| 青青草国产成人99久久| av午夜精品一区二区三区| 欧美一区二区久久| 亚洲欧美一区二区三区国产精品 | 丁香五精品蜜臀久久久久99网站 | 激情六月婷婷久久| 91美女片黄在线| 久久综合九色欧美综合狠狠| 伊人婷婷欧美激情| 国产乱色国产精品免费视频| 欧美日韩激情在线| 国产精品污污网站在线观看| 久久精品国内一区二区三区| 在线视频中文字幕一区二区| 国产精品免费丝袜|