agronholm / apscheduler

Task scheduling library for Python
MIT License
5.94k stars 690 forks source link

SQLAlchemyDataStore doesn't respect a custom schema for types #885

Closed Sanchoyzer closed 1 month ago

Sanchoyzer commented 3 months ago

Things to check first

Version

4.0.0a4

What happened?

There is a schema parameter for the SQLAlchemyDataStore. The apscheduler tables will follow this parameter, but object types (like joboutcome or coalescepolicy) will be created in public

How can we reproduce the bug?

from apscheduler import AsyncScheduler
from apscheduler.datastores.sqlalchemy import SQLAlchemyDataStore
from apscheduler.eventbrokers.asyncpg import AsyncpgEventBroker
from sqlalchemy.ext.asyncio import create_async_engine

engine = create_async_engine('postgresql+asyncpg://...', future=True)

data_store = SQLAlchemyDataStore(engine, schema='apscheduler')
event_broker = AsyncpgEventBroker.from_async_sqla_engine(engine)
scheduler = AsyncScheduler(data_store, event_broker)

async def main() -> None:
    async with scheduler:
        await scheduler.add_schedule(...)
        await scheduler.run_until_stopped()

if __name__ == '__main__':
    asyncio.run(main())