diff --git a/config/default.yaml b/config/default.yaml index 689f81343..c3e42350b 100644 --- a/config/default.yaml +++ b/config/default.yaml @@ -470,6 +470,9 @@ import: # Amount of import jobs to execute in parallel concurrency: 1 + # Set a custom video import timeout to not block import queue + timeout: '2 hours' + # Classic HTTP or all sites supported by youtube-dl https://rg3.github.io/youtube-dl/supportedsites.html http: # We recommend to use a HTTP proxy if you enable HTTP import to prevent private URL access from this server diff --git a/config/production.yaml.example b/config/production.yaml.example index 6db43fccf..4351a4b87 100644 --- a/config/production.yaml.example +++ b/config/production.yaml.example @@ -478,6 +478,9 @@ import: # Amount of import jobs to execute in parallel concurrency: 1 + # Set a custom video import timeout to not block import queue + timeout: '2 hours' + # Classic HTTP or all sites supported by youtube-dl https://rg3.github.io/youtube-dl/supportedsites.html http: # We recommend to use a HTTP proxy if you enable HTTP import to prevent private URL access from this server diff --git a/server/initializers/checker-before-init.ts b/server/initializers/checker-before-init.ts index 794303743..266579246 100644 --- a/server/initializers/checker-before-init.ts +++ b/server/initializers/checker-before-init.ts @@ -31,8 +31,8 @@ function checkMissedConfig () { 'transcoding.resolutions.0p', 'transcoding.resolutions.144p', 'transcoding.resolutions.240p', 'transcoding.resolutions.360p', 'transcoding.resolutions.480p', 'transcoding.resolutions.720p', 'transcoding.resolutions.1080p', 'transcoding.resolutions.1440p', 'transcoding.resolutions.2160p', 'video_studio.enabled', - 'import.videos.http.enabled', 'import.videos.torrent.enabled', 'import.videos.concurrency', 'auto_blacklist.videos.of_users.enabled', - 'trending.videos.interval_days', + 'import.videos.http.enabled', 'import.videos.torrent.enabled', 'import.videos.concurrency', 'import.videos.timeout', + 'auto_blacklist.videos.of_users.enabled', 'trending.videos.interval_days', 'client.videos.miniature.display_author_avatar', 'client.videos.miniature.prefer_author_display_name', 'client.menu.login.redirect_on_single_external_auth', 'defaults.publish.download_enabled', 'defaults.publish.comments_enabled', 'defaults.publish.privacy', 'defaults.publish.licence', diff --git a/server/initializers/config.ts b/server/initializers/config.ts index 59a65d6a5..2f59e3e3e 100644 --- a/server/initializers/config.ts +++ b/server/initializers/config.ts @@ -349,6 +349,7 @@ const CONFIG = { IMPORT: { VIDEOS: { get CONCURRENCY () { return config.get('import.videos.concurrency') }, + get TIMEOUT () { return parseDurationToMs(config.get('import.videos.timeout')) }, HTTP: { get ENABLED () { return config.get('import.videos.http.enabled') }, diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 909fffdb6..02c1ef251 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -183,7 +183,7 @@ const JOB_TTL: { [id in JobType]: number } = { 'video-file-import': 1000 * 3600, // 1 hour 'video-transcoding': 1000 * 3600 * 48, // 2 days, transcoding could be long 'video-studio-edition': 1000 * 3600 * 10, // 10 hours - 'video-import': 1000 * 3600 * 2, // 2 hours + 'video-import': CONFIG.IMPORT.VIDEOS.TIMEOUT, 'email': 60000 * 10, // 10 minutes 'actor-keys': 60000 * 20, // 20 minutes 'videos-views-stats': undefined, // Unlimited diff --git a/server/lib/schedulers/geo-ip-update-scheduler.ts b/server/lib/schedulers/geo-ip-update-scheduler.ts index 9dda6d76c..b06f5a9b5 100644 --- a/server/lib/schedulers/geo-ip-update-scheduler.ts +++ b/server/lib/schedulers/geo-ip-update-scheduler.ts @@ -6,7 +6,7 @@ export class GeoIPUpdateScheduler extends AbstractScheduler { private static instance: AbstractScheduler - protected schedulerIntervalMs = SCHEDULER_INTERVALS_MS.YOUTUBE_DL_UPDATE + protected schedulerIntervalMs = SCHEDULER_INTERVALS_MS.GEO_IP_UPDATE private constructor () { super()