diff options
author | Alex Grönholm <alex.gronholm@nextday.fi> | 2022-07-26 19:49:41 +0300 |
---|---|---|
committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2022-07-27 13:02:08 +0300 |
commit | 032e5ef97fb252227717f21a7150cc73e19f41c3 (patch) | |
tree | 49360033338f1264d8c4f58e214535c8673458f9 | |
parent | 14862581e46da0698d63e98558f9932e5fc0b7e1 (diff) | |
download | apscheduler-032e5ef97fb252227717f21a7150cc73e19f41c3.tar.gz |
Tested SQLAlchemy data store against MySQL, and fixed missing "await"
-rw-r--r-- | pyproject.toml | 1 | ||||
-rw-r--r-- | src/apscheduler/datastores/async_sqlalchemy.py | 2 | ||||
-rw-r--r-- | tests/test_datastores.py | 20 |
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( |