django-tasks
django-tasks copied to clipboard
Specify which database backend to use
It's currently not possible to specify which database backend will be used (ie the ones configured in DATABASES). Especially for SQLite, it's useful to separate the queue tables into a separate database.
Hey is this still open and unassigned?
Yes. If you're interested in working on it, by all means do. I don't assign issues to people specifically though - anyone can work on anything.
@RealOrangeOne if this needs to be implemented, can we just add database in the following tasks config if we are using DatabaseBackend and set the default to default database defined in settings and then have all task related models to use the database defined in tasks config dict.
TASKS = {
"default": {
"BACKEND": "django_tasks.backends.immediate.ImmediateBackend",
"DATABASE": "name_of_the_database" i.e. "tasks_db" # if not set use the default
}
}
or are we looking for a more sophisticated solution than this option.
I think it'll need something a little more complex than this, as both the worker and migrations need to use this value. It might be that a database router is the only way to implement this, in which case there's not much to do ourselves besides ensure the correct DB is specified when needed.
Since it's something specific to the DatabaseBackend, it feels like it should reside inside an OPTIONS key:
TASKS = {
"default": {
"BACKEND": "django_tasks.backends.database.DatabaseBackend",
"OPTIONS": {
"alias": "tasks_db"
}
}
I think a better way to handle this would be using a database router. I don't think one should be included, but at least documenting how to write one would be ideal. Exactly how multiple installed database backends would be handled I don't know.
Hi @RealOrangeOne , I have created a draft PR that attemps to solve the problem based on the above suggestions. Any suggestions would be helpful - https://github.com/RealOrangeOne/django-tasks/pull/122.