我正在編寫一個python腳本,它將啓動一個本地文件服務器,並且當該服務器處於活動狀態時,它將每隔30秒寫入一個文件。我想讓服務器和寫入器函數同步運行,所以我讓寫入器函數成爲守護進程線程......我的主要問題是,因爲一旦服務器停止,守護進程線程將退出,如果守護進程正處於寫入到一個文件將在退出之前完成該操作?用1/2的文件留下真的很糟糕。這裏是代碼,但它要寫的實際文件大約是3千行JSON,因此值得關注。Python3:等待守護進程完成迭代
import http.server
import socketserver
from time import sleep
from threading import Thread
class Server:
def __init__(self):
self.PORT = 8000
self.Handler = http.server.SimpleHTTPRequestHandler
self.httpd = socketserver.TCPServer(("", self.PORT), self.Handler)
print("Serving at port", self.PORT)
def run(self):
try:
self.httpd.serve_forever()
except KeyboardInterrupt:
print("Server stopped")
def test():
while True:
with open('test', mode='w') as file:
file.write('testing...')
print('file updated')
sleep(5)
if __name__ == "__main__":
t = Thread(target=test, daemon=True)
t.start()
server = Server()
server.run()