Stop Xtream imports from freezing the server while fetching from the provider
run_xtream_import made 6 sequential synchronous requests.get() calls (60s timeout each) directly inside an asyncio task, so the whole event loop — and every other request/socket the server was handling — stalled for the full duration of each Xtream import, same failure mode as the logo-download freeze fixed earlier. Run them through run_in_executor instead so the loop stays free. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
0fa98c7283
commit
3eff9519db
@@ -741,19 +741,20 @@ async def run_xtream_import(id_playlist, import_key, collection_channels,
|
||||
try:
|
||||
await emit_analysis_progress({'percentage': 0.02}, sidClient)
|
||||
|
||||
live_categories = parse_xtream_category_map(
|
||||
fetch_xtream_json(xtream_server, xtream_username, xtream_password, 'get_live_categories')
|
||||
)
|
||||
vod_categories = parse_xtream_category_map(
|
||||
fetch_xtream_json(xtream_server, xtream_username, xtream_password, 'get_vod_categories')
|
||||
)
|
||||
series_categories = parse_xtream_category_map(
|
||||
fetch_xtream_json(xtream_server, xtream_username, xtream_password, 'get_series_categories')
|
||||
)
|
||||
loop = asyncio.get_running_loop()
|
||||
|
||||
live_streams = fetch_xtream_json(xtream_server, xtream_username, xtream_password, 'get_live_streams')
|
||||
vod_streams = fetch_xtream_json(xtream_server, xtream_username, xtream_password, 'get_vod_streams')
|
||||
series_list = fetch_xtream_json(xtream_server, xtream_username, xtream_password, 'get_series')
|
||||
async def fetch(action, **extra_params):
|
||||
return await loop.run_in_executor(
|
||||
None, lambda: fetch_xtream_json(xtream_server, xtream_username, xtream_password, action, **extra_params)
|
||||
)
|
||||
|
||||
live_categories = parse_xtream_category_map(await fetch('get_live_categories'))
|
||||
vod_categories = parse_xtream_category_map(await fetch('get_vod_categories'))
|
||||
series_categories = parse_xtream_category_map(await fetch('get_series_categories'))
|
||||
|
||||
live_streams = await fetch('get_live_streams')
|
||||
vod_streams = await fetch('get_vod_streams')
|
||||
series_list = await fetch('get_series')
|
||||
|
||||
total_steps = max(1, len(live_streams) + len(vod_streams) + len(series_list))
|
||||
processed_steps = 0
|
||||
|
||||
Reference in New Issue
Block a user