Skip to content

Instantly share code, notes, and snippets.

@agronholm
Created November 30, 2024 17:50
Show Gist options
  • Save agronholm/05b37403bdf2a211424b895608600926 to your computer and use it in GitHub Desktop.
Save agronholm/05b37403bdf2a211424b895608600926 to your computer and use it in GitHub Desktop.
APScheduler + Redis + PoolProcessExecutor
from apscheduler.executors.pool import ProcessPoolExecutor, ThreadPoolExecutor
from apscheduler.jobstores.redis import RedisJobStore
from apscheduler.schedulers.background import BlockingScheduler
from apscheduler.triggers.cron import CronTrigger
from func import heart_beat
if __name__ == "__main__":
executors = {
'default': ThreadPoolExecutor(max_workers=10),
'processpool': ProcessPoolExecutor(max_workers=5)
}
jobstores = {'redis': RedisJobStore()}
scheduler = BlockingScheduler(jobstores=jobstores, executors=executors)
scheduler.add_job(
id="pooljob",
func=heart_beat,
replace_existing=True,
trigger=CronTrigger.from_crontab("* * * * *"),
jobstore='redis',
executor="processpool",
)
scheduler.start()
from datetime import datetime
def heart_beat():
print(f"now: {datetime.now()}")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment