add rescan lock

This commit is contained in:
simon 2021-12-02 19:11:45 +07:00
parent 40c7a6a3f7
commit 4136a2a4f2
No known key found for this signature in database
GPG Key ID: 2C15AA5E89985DD4
2 changed files with 29 additions and 12 deletions

View File

@ -38,7 +38,13 @@ def make_folders():
def release_lock(): def release_lock():
"""make sure there are no leftover locks set in redis on container start""" """make sure there are no leftover locks set in redis on container start"""
all_locks = ["manual_import", "downloading", "dl_queue", "dl_queue_id"] all_locks = [
"manual_import",
"downloading",
"dl_queue",
"dl_queue_id",
"rescan",
]
for lock in all_locks: for lock in all_locks:
response = RedisArchivist().del_message(lock) response = RedisArchivist().del_message(lock)
if response: if response:

View File

@ -45,17 +45,28 @@ def update_subscribed():
"title": "Start rescanning channels and playlists.", "title": "Start rescanning channels and playlists.",
} }
RedisArchivist().set_message("progress:download", message) RedisArchivist().set_message("progress:download", message)
channel_handler = ChannelSubscription()
missing_from_channels = channel_handler.find_missing() have_lock = False
playlist_handler = PlaylistSubscription() my_lock = RedisArchivist().get_lock("rescan")
missing_from_playlists = playlist_handler.find_missing()
missing_videos = missing_from_channels + missing_from_playlists try:
if missing_videos: have_lock = my_lock.acquire(blocking=False)
pending_handler = PendingList() if have_lock:
all_videos_added = pending_handler.add_to_pending(missing_videos) channel_handler = ChannelSubscription()
ThumbManager().download_vid(all_videos_added) missing_from_channels = channel_handler.find_missing()
# check if reindex is needed playlist_handler = PlaylistSubscription()
check_reindex.delay() missing_from_playlists = playlist_handler.find_missing()
missing = missing_from_channels + missing_from_playlists
if missing:
pending_handler = PendingList()
all_videos_added = pending_handler.add_to_pending(missing)
ThumbManager().download_vid(all_videos_added)
else:
print("Did not acquire rescan lock.")
finally:
if have_lock:
my_lock.release()
@shared_task(name="download_pending") @shared_task(name="download_pending")