add a reset tasks cli command
This commit is contained in:
parent
bceefc8b01
commit
96b9eddf43
|
@ -239,6 +239,8 @@ and less common features:
|
|||
|
||||
![Sync or create missing metadata files](https://github.com/meeb/tubesync/blob/main/docs/create-missing-metadata.md)
|
||||
|
||||
![Reset tasks from the command line](https://github.com/meeb/tubesync/blob/main/docs/reset-tasks.md)
|
||||
|
||||
|
||||
# Warnings
|
||||
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
# TubeSync
|
||||
|
||||
## Advanced usage guide - reset tasks from the command line
|
||||
|
||||
This is a new feature in v1.0 of TubeSync and later. It allows you to reset all
|
||||
scheduled tasks from the command line as well as the "reset tasks" button in the
|
||||
"tasks" tab of the dashboard.
|
||||
|
||||
This is useful for TubeSync installations where you may have a lot of media and
|
||||
sources added and the "reset tasks" button may take too long to the extent where
|
||||
the page times out (with a 502 error or similar issue).
|
||||
|
||||
## Requirements
|
||||
|
||||
You have added some sources and media
|
||||
|
||||
## Steps
|
||||
|
||||
### 1. Run the reset tasks command
|
||||
|
||||
Execute the following Django command:
|
||||
|
||||
`./manage.py reset-tasks`
|
||||
|
||||
When deploying TubeSync inside a container, you can execute this with:
|
||||
|
||||
`docker exec -ti tubesync python3 /app/manage.py reset-tasks`
|
||||
|
||||
This command will log what its doing to the terminal when you run it.
|
||||
|
||||
When this is run, new tasks will be immediately created so all your sources will be
|
||||
indexed again straight away, any missing information such as thumbnails will be
|
||||
redownloaded, etc.
|
|
@ -0,0 +1,30 @@
|
|||
from django.core.management.base import BaseCommand, CommandError
|
||||
from background_task.models import Task
|
||||
from sync.models import Source
|
||||
|
||||
|
||||
from common.logger import log
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
|
||||
help = 'Resets all tasks'
|
||||
|
||||
def handle(self, *args, **options):
|
||||
log.info('Resettings all tasks...')
|
||||
# Delete all tasks
|
||||
Task.objects.all().delete()
|
||||
# Iter all tasks
|
||||
for source in Source.objects.all():
|
||||
# Recreate the initial indexing task
|
||||
verbose_name = _('Index media from source "{}"')
|
||||
index_source_task(
|
||||
str(source.pk),
|
||||
repeat=source.index_schedule,
|
||||
queue=str(source.pk),
|
||||
priority=5,
|
||||
verbose_name=verbose_name.format(source.name)
|
||||
)
|
||||
# This also chains down to call each Media objects .save() as well
|
||||
source.save()
|
||||
log.info('Done')
|
Loading…
Reference in New Issue