summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Grönholm <alex.gronholm@nextday.fi>2022-07-26 19:49:41 +0300
committerAlex Grönholm <alex.gronholm@nextday.fi>2022-07-27 13:02:08 +0300
commit032e5ef97fb252227717f21a7150cc73e19f41c3 (patch)
tree49360033338f1264d8c4f58e214535c8673458f9
parent14862581e46da0698d63e98558f9932e5fc0b7e1 (diff)
downloadapscheduler-032e5ef97fb252227717f21a7150cc73e19f41c3.tar.gz
Tested SQLAlchemy data store against MySQL, and fixed missing "await"
-rw-r--r--pyproject.toml1
-rw-r--r--src/apscheduler/datastores/async_sqlalchemy.py2
-rw-r--r--tests/test_datastores.py20
3 files changed, 22 insertions, 1 deletions
diff --git a/pyproject.toml b/pyproject.toml
index 004c1dd..816a9a7 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -42,6 +42,7 @@ redis = ["redis >= 4.0"]
sqlalchemy = ["sqlalchemy >= 1.4.22"]
test = [
"asyncpg >= 0.20",
+ "asyncmy >= 0.2.5",
"cbor2 >= 5.0",
"coverage",
"freezegun",
diff --git a/src/apscheduler/datastores/async_sqlalchemy.py b/src/apscheduler/datastores/async_sqlalchemy.py
index 24eacce..6724250 100644
--- a/src/apscheduler/datastores/async_sqlalchemy.py
+++ b/src/apscheduler/datastores/async_sqlalchemy.py
@@ -300,7 +300,7 @@ class AsyncSQLAlchemyDataStore(_BaseSQLAlchemyDataStore, BaseAsyncDataStore):
query = self.t_schedules.select().where(
and_(self.t_schedules.c.acquired_by == scheduler_id)
)
- result = conn.execute(query)
+ result = await conn.execute(query)
schedules = await self._deserialize_schedules(result)
diff --git a/tests/test_datastores.py b/tests/test_datastores.py
index bac6113..e838d9c 100644
--- a/tests/test_datastores.py
+++ b/tests/test_datastores.py
@@ -117,6 +117,21 @@ async def asyncpg_store() -> AsyncDataStore:
@pytest.fixture
+async def asyncmy_store() -> AsyncDataStore:
+ from sqlalchemy.ext.asyncio import create_async_engine
+
+ from apscheduler.datastores.async_sqlalchemy import AsyncSQLAlchemyDataStore
+
+ engine = create_async_engine(
+ "mysql+asyncmy://root:secret@localhost/testdb?charset=utf8mb4", future=True
+ )
+ try:
+ yield AsyncSQLAlchemyDataStore(engine, start_from_scratch=True)
+ finally:
+ await engine.dispose()
+
+
+@pytest.fixture
def schedules() -> list[Schedule]:
trigger = DateTrigger(datetime(2020, 9, 13, tzinfo=timezone.utc))
schedule1 = Schedule(id="s1", task_id="task1", trigger=trigger)
@@ -623,6 +638,11 @@ class TestAsyncDataStores:
id="asyncpg",
marks=[pytest.mark.external_service],
),
+ pytest.param(
+ lazy_fixture("asyncmy_store"),
+ id="asyncmy",
+ marks=[pytest.mark.external_service],
+ ),
]
)
async def raw_datastore(