Masalah semacam ini adalah ladang ranjau dari kasus Edge sehingga saya akan selalu mendelegasikan logika ke sesuatu seperti IceCube (https://github.com/seejohnrun/ice_cube ). Itu dibuat untuk menangani jadwal berulang semacam ini, dan dilengkapi dengan dukungan mudah untuk serialisasi, dll. Bahkan jika itu memerlukan sedikit pemikiran ulang tentang bagaimana Anda melakukan sesuatu, saya sangat menyarankan untuk menggunakannya.