婷婷综合国产,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
    2欧美一区二区三区在线观看视频| 亚洲女人的天堂| 国产精品全国免费观看高清 | 一区在线播放视频| 国产iv一区二区三区| 久久嫩草精品久久久精品一| 国产精品一区在线| 亚洲欧洲成人自拍| 欧美午夜不卡在线观看免费| 亚洲国产aⅴ成人精品无吗| 欧美日本在线看| 国产精品影视在线观看| 国产精品二三区| 欧美吻胸吃奶大尺度电影| 喷水一区二区三区| 国产农村妇女毛片精品久久麻豆 | 一区二区三区在线免费视频| 色综合天天性综合| 午夜欧美2019年伦理| 欧美成人aa大片| 91小视频在线| 美女精品自拍一二三四| 国产日韩欧美不卡在线| 欧美无乱码久久久免费午夜一区| 老司机精品视频线观看86| 中文字幕中文字幕一区| 91精品视频网| 成+人+亚洲+综合天堂| 亚洲1区2区3区视频| 欧美电影免费观看高清完整版在线观看| 久久97超碰国产精品超碰| 一区二区中文视频| 777a∨成人精品桃花网| 91视频国产资源| 奇米影视一区二区三区小说| 亚洲欧洲国产日本综合| 26uuu久久综合| 欧美欧美午夜aⅴ在线观看| 丁香天五香天堂综合| 日本成人在线不卡视频| 综合欧美亚洲日本| 欧美一区二区三区成人| 精品88久久久久88久久久| www.在线欧美| 极品少妇xxxx精品少妇偷拍| 亚洲午夜成aⅴ人片| 久久久久高清精品| 日韩一级免费一区| 欧美色精品在线视频| av在线播放不卡| 国产69精品久久久久777| 麻豆精品视频在线观看免费| 亚洲午夜精品17c| 日韩一区日韩二区| 欧美国产成人在线| 国产欧美1区2区3区| 亚洲国产精品av| 中文av一区特黄| 国产精品久久久久影院色老大| xvideos.蜜桃一区二区| 日韩午夜在线观看视频| 678五月天丁香亚洲综合网| 色系网站成人免费| 在线视频一区二区免费| 91性感美女视频| 一本一道久久a久久精品| 91浏览器入口在线观看| 91麻豆成人久久精品二区三区| 91蜜桃婷婷狠狠久久综合9色| 不卡的电影网站| 色综合一个色综合| 欧美日韩精品一区二区| 欧美疯狂做受xxxx富婆| 欧美精品v国产精品v日韩精品 | 高清视频一区二区| jizzjizzjizz欧美| 在线观看三级视频欧美| 欧美日韩国产精品成人| 日韩午夜在线影院| 中文字幕精品综合| 亚洲精品一二三| 丝袜美腿高跟呻吟高潮一区| 国产99精品国产| 国产综合成人久久大片91| 国产精品一区三区| 91免费观看视频| 欧美精品久久一区二区三区| 久久久青草青青国产亚洲免观| 中文字幕欧美国产| 亚洲精品免费在线| 蜜臀久久99精品久久久久宅男| 国产精品综合在线视频| 色播五月激情综合网| 日韩欧美专区在线| 亚洲丝袜美腿综合| 美腿丝袜亚洲综合| 97久久超碰精品国产| 欧美成人官网二区| 亚洲乱码日产精品bd| 麻豆精品一区二区三区| 91亚洲精华国产精华精华液| 精品久久久久av影院| 一区二区三区四区av| 国产一区二区精品久久91| 欧美专区在线观看一区| 久久尤物电影视频在线观看| 亚洲自拍偷拍欧美| 国产成人啪免费观看软件| 在线精品国精品国产尤物884a| 欧美sm美女调教| 亚洲动漫第一页| av激情综合网| 久久久99精品免费观看不卡| 五月天视频一区| 在线看国产一区二区| 中国色在线观看另类| 天天av天天翘天天综合网色鬼国产| 国产最新精品精品你懂的| 色妹子一区二区| 国产欧美日韩精品a在线观看| 日韩国产欧美在线视频| 欧美亚洲尤物久久| 亚洲日本va午夜在线电影| 国产精品综合av一区二区国产馆| 91精品国产综合久久精品app| 玉米视频成人免费看| 波多野结衣在线一区| 亚洲国产高清aⅴ视频| 国产一区免费电影| 精品久久久网站| 久久精品国产免费看久久精品| 欧美乱妇一区二区三区不卡视频| 一区二区三区欧美| 欧美自拍偷拍一区| 亚洲第一福利视频在线| 欧美三级蜜桃2在线观看| 亚洲自拍另类综合| 欧美无砖砖区免费| 日本不卡一二三| 精品国产1区二区| 国产91富婆露脸刺激对白| 欧美国产一区视频在线观看| 高清在线观看日韩| 亚洲视频 欧洲视频| 日本高清视频一区二区| 午夜免费久久看| 日韩欧美一二三四区| 国产一区二区在线观看免费| 久久久久久久国产精品影院| 成人av网站免费| 亚洲综合一二区| 56国语精品自产拍在线观看| 乱中年女人伦av一区二区| 久久久亚洲精品一区二区三区| 菠萝蜜视频在线观看一区| 一级日本不卡的影视| 91麻豆精品国产91久久久资源速度 | 国产精品欧美综合在线| 97精品超碰一区二区三区| 午夜电影久久久| 国产欧美一区二区三区网站| 91蜜桃免费观看视频| 日本午夜一本久久久综合| 国产亚洲一二三区| 欧美日韩久久一区| 免费精品99久久国产综合精品| 欧美成人aa大片| 91美女在线观看| 日韩中文欧美在线| 国产欧美精品一区aⅴ影院| 在线观看一区不卡| 国产毛片一区二区| 中文字幕一区二区三区在线观看 | 成人激情小说网站| 日韩精品一区第一页| 国产精品水嫩水嫩| 欧美放荡的少妇| 国产福利一区在线观看| 亚洲成人激情社区| 国产精品久久久久久久久晋中 | 国产亚洲欧美日韩日本| 色8久久人人97超碰香蕉987| 九色porny丨国产精品| 中文字幕在线不卡国产视频| 日韩欧美国产精品| 91麻豆6部合集magnet| 国产乱码一区二区三区| 午夜精品久久久久久不卡8050| 久久久久久久久97黄色工厂| 在线观看视频91| 成人午夜激情视频| 捆绑变态av一区二区三区| 自拍偷拍亚洲欧美日韩| 日韩午夜激情电影| 欧美老肥妇做.爰bbww| 99r国产精品| 成人精品gif动图一区| 国产精品夜夜嗨| 另类小说一区二区三区| 日韩高清一区二区|