保持舊 Python 代碼健康和安全的更簡單方法

Python 有其優點和缺點,但它仍然被廣泛使用。例如,即使有更合適的語言可供選擇,Python 也經常用于數據處理任務。
為什么?好吧,Python 相對容易學習。具有科學背景的人可以比 C 語言更快地學習 Python。然而,Python 固有的平易近人也帶來了一些問題。
每當 Python 更新時,都意味著大量的重構工作量,而這通常會被處理得很差——或者根本不處理。這會導致性能不佳和安全漏洞。但也許有更好的方法:一個讓你的 Python 任務日復一日平穩、安全地運行的工具。讓我們來看看。
它很慢,但它可以完成工作
Python 不是最快的語言,但盡管它有相對劣勢,但您經常會看到它用于密集的數據處理操作。想想機器學習、計算機視覺,甚至是高性能計算 (HPC) 系統中的純數學。
因此,盡管它在性能方面享有盛譽,但通常使用 Python 代碼處理非常困難的工作負載,僅僅是因為它使用起來非常實用。如果你有科學或數學背景,你可以相對輕松地學習 Python 并編寫自己的代碼來完成這項工作。
但是,通常情況下,可以訪問的東西也會帶來很多風險。編寫 Python 代碼的經驗不足的程序員可能會為更有經驗的程序員認為理所當然的任務而苦苦掙扎。
重構是一件麻煩事……也是一種風險
像所有編程語言一樣,Python 會頻繁更新。例如,從 Python 2.7 到 Python 3.0 的轉變帶來了一大堆特性和改進。這也意味著由于 Python 工作方式的變化,為 Python 2.7 編寫的任何內容都需要為 Python 3.0 “重構”。
重構是指程序員調整代碼庫以響應環境變化的方式,例如語言版本的變化,或者只是以某種形式改進現有代碼。如果不進行重構,從 Python 2.7 到 Python 3.0 的轉變通常意味著 Python 2.7 的代碼不再那么好,甚至根本不能正常工作。
這就是問題所在:編寫原始 Python 代碼的用戶可能沒有重構的專業知識。畢竟,他們通常是科學家——而不是經驗豐富的程序員。當沒有經驗的程序員試圖調整代碼時,存在性能下降和錯誤潛入的真正風險——有時只有在出現邊緣情況時才可見。當 Python 代碼用于關鍵的、24/7 的目的(如科學分析)時,小錯誤成為主要問題。
重構也可能導致意外的性能下降。即使只是 5% 的性能損失,執行不佳的代碼更新也會在昂貴的按使用付費的 HPC 平臺上迅速產生更大的費用。
堅持使用舊 Python?這是更大的風險
如果您考慮調整代碼所涉及的艱苦工作和風險,那么用戶經常選擇堅持使用舊版本的 Python 也就不足為奇了。在過時的 Python 版本上運行現有代碼可以避免很多挑戰,因為您不需要重構:您將代碼保持原樣。
通常,軟件供應商會這樣做——僅在發布新版本的軟件產品時更新他們的軟件以匹配新的 Python 版本。如果您購買了特定版本——例如在 Python 2.7 上運行,那么您就會陷入困境,無論如何您都需要繼續運行 Python 2.7。
這聽起來不是什么大問題,但是依靠過時的、不受支持的構建塊來進行計算是 DevSecOps 的噩夢。新的漏洞會出現,而所需的補丁就不會出現。因此,依賴舊版本的編程語言會給您的計算環境帶來巨大的風險。
它幾乎沒有選擇——或者有嗎?
負責任的做法是在需要時更新 Python 版本并編輯在其上運行的代碼,但沒有一種輕松的方法可以做到這一點。實際上,由于缺乏資源,重構通常無法完成,并可能帶來代價高昂的后果。
非常需要一種更好的方法,這就是有趣的地方。我們剛剛描述的圍繞 Python 版本的情況在計算世界中很常見。例如,組織通常會運行官方供應商支持不再涵蓋的 Linux 操作系統版本,冒著安全漏洞不會被修補以確保關鍵應用程序不會中斷的風險。
這也是語言更新以及其他 IT 基礎設施的問題。但是,近年來,先進的修補解決方案允許公司擴展多個組件的通常支持生命周期,從整個操作系統到特定的關鍵共享庫。在TuxCare,我們開發了幾種解決方案,可將舊軟件的安全、可靠運行擴展到供應商的生命周期結束后。
安全可靠地運行較舊的 Python 應用程序
如果語言版本也可以這樣做呢?好吧,您現在可以期待在舊版本的 Python 上運行舊的 Python 代碼——但沒有它所帶來的風險。沒有棄用的語言結構——也沒有漏洞。
換句話說,對語言版本(例如 Python)的擴展生命周期支持正在成為現實。您很快就能保證您的 Python 代碼安全可靠,而無需重寫一行代碼,只需獲得對 Python 的擴展生命周期支持——它為您提供與完整版本升級相同的安全保護。