Если бы был конкурс на написание самого кривого планировщика событий (task scheduler) - этот код, несомненно, занял бы первое место) Попробуйте, например,
delayed calls в asyncio.
UPD Пример простого решения "в лоб", без асинхронности:
from time import time, sleep
from operator import attrgetter
class Article:
def __init__(self, timestamp, text):
self.timestamp, self.text = timestamp, text
def post(self):
print(f"planned={self.timestamp:.0f}, posted={time():.0f}, text={self.text}")
class Scheduler:
def __init__(self, *articles):
self.articles = sorted(articles, key=attrgetter("timestamp"))
def execute(self):
for article in self.articles:
sleep(max(article.timestamp - time(), 0))
article.post()
if __name__ == "__main__":
now = time()
Scheduler(
Article(now + 7, "post3"),
Article(now + 2, "post1"),
Article(now + 3, "post2"),
).execute()