Bezpieczny i odporny na błędy plik zapisuje

Mam długotrwały proces, który zapisuje wiele rzeczy w pliku. Wynik powinien być wszystkim lub niczym, więc piszę do pliku tymczasowego i zmieniam jego nazwę na prawdziwe nazwisko na końcu. Obecnie mój kod wygląda następująco:

filename = 'whatever'
tmpname = 'whatever' + str(time.time())

with open(tmpname, 'wb') as fp:
    fp.write(stuff)
    fp.write(more stuff)

if os.path.exists(filename):
    os.unlink(filename)
os.rename(tmpname, filename)

Nie jestem z tego zadowolony z kilku powodów:

nie czyści się prawidłowo, jeśli wystąpi wyjątekignoruje problemy z współbieżnościąnie nadaje się do ponownego użycia (potrzebuję tego w różnych miejscach mojego programu)

Jakieś sugestie, jak poprawić mój kod? Czy istnieje biblioteka, która może mi pomóc?

questionAnswers(4)

yourAnswerToTheQuestion