summaryrefslogtreecommitdiff
path: root/examples/standalone/async_postgres.py
diff options
context:
space:
mode:
authorAlex Grönholm <alex.gronholm@nextday.fi>2022-07-27 13:01:55 +0300
committerAlex Grönholm <alex.gronholm@nextday.fi>2022-07-27 13:02:08 +0300
commite4a926f5ec113be711dad94773c45b34aebd0ff1 (patch)
tree8b9f1d9553080b06201d7d10ae43de440401cce2 /examples/standalone/async_postgres.py
parent0bfc8d54f358c0c26d613088547b1b025cd16a6e (diff)
downloadapscheduler-e4a926f5ec113be711dad94773c45b34aebd0ff1.tar.gz
Updated the examples for v4
Diffstat (limited to 'examples/standalone/async_postgres.py')
-rw-r--r--examples/standalone/async_postgres.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/examples/standalone/async_postgres.py b/examples/standalone/async_postgres.py
new file mode 100644
index 0000000..e6083f7
--- /dev/null
+++ b/examples/standalone/async_postgres.py
@@ -0,0 +1,38 @@
+"""
+Example demonstrating use of the asynchronous scheduler with persistence via PostgreSQL
+in a simple asyncio app.
+
+Requires the "postgresql" service to be running.
+To install prerequisites: pip install sqlalchemy asyncpg
+To run: python async_postgres.py
+
+It should print a line on the console on a one-second interval.
+"""
+
+from __future__ import annotations
+
+from asyncio import run
+from datetime import datetime
+
+from sqlalchemy.ext.asyncio import create_async_engine
+
+from apscheduler.datastores.async_sqlalchemy import AsyncSQLAlchemyDataStore
+from apscheduler.schedulers.async_ import AsyncScheduler
+from apscheduler.triggers.interval import IntervalTrigger
+
+
+def tick():
+ print("Hello, the time is", datetime.now())
+
+
+async def main():
+ engine = create_async_engine(
+ "postgresql+asyncpg://postgres:secret@localhost/testdb"
+ )
+ data_store = AsyncSQLAlchemyDataStore(engine)
+ async with AsyncScheduler(data_store) as scheduler:
+ await scheduler.add_schedule(tick, IntervalTrigger(seconds=1), id="tick")
+ await scheduler.wait_until_stopped()
+
+
+run(main())