| skipped 397 lines |
398 | 398 | | |
399 | 399 | | |
400 | 400 | | def make_site_result( |
401 | | - | site: MaigretSite, username: str, options: QueryOptions, logger |
| 401 | + | site: MaigretSite, username: str, options: QueryOptions, logger, *args, **kwargs |
402 | 402 | | ) -> QueryResultWrapper: |
403 | 403 | | results_site: QueryResultWrapper = {} |
404 | 404 | | |
| skipped 16 lines |
421 | 421 | | |
422 | 422 | | if "url" not in site.__dict__: |
423 | 423 | | logger.error("No URL for site %s", site.name) |
424 | | - | if hasattr(site, "mirrors"): |
425 | | - | results_site["url_main"] = random.choice(site.mirrors) |
| 424 | + | |
| 425 | + | if kwargs.get('retry') and hasattr(site, "mirrors"): |
| 426 | + | site.url_main = random.choice(site.mirrors) |
| 427 | + | logger.info(f"Use {site.url_main} as a main url of site {site}") |
| 428 | + | |
426 | 429 | | # URL of user on site (if it exists) |
427 | 430 | | url = site.url.format( |
428 | 431 | | urlMain=site.url_main, urlSubpath=site.url_subpath, username=quote(username) |
| skipped 97 lines |
526 | 529 | | async def check_site_for_username( |
527 | 530 | | site, username, options: QueryOptions, logger, query_notify, *args, **kwargs |
528 | 531 | | ) -> Tuple[str, QueryResultWrapper]: |
529 | | - | default_result = make_site_result(site, username, options, logger) |
| 532 | + | default_result = make_site_result(site, username, options, logger, retry=kwargs.get('retry')) |
530 | 533 | | future = default_result.get("future") |
531 | 534 | | if not future: |
532 | 535 | | return site.name, default_result |
| skipped 174 lines |
707 | 710 | | tasks_dict[sitename] = ( |
708 | 711 | | check_site_for_username, |
709 | 712 | | [site, username, options, logger, query_notify], |
710 | | - | {'default': (sitename, default_result)}, |
| 713 | + | {'default': (sitename, default_result), 'retry': retries-attempts+1}, |
711 | 714 | | ) |
712 | 715 | | |
713 | 716 | | cur_results = await executor.run(tasks_dict.values()) |
| skipped 184 lines |