(*args, **kwargs)
| 73 | |
| 74 | @wraps(func) |
| 75 | def wrapper_browser(*args, **kwargs) -> Any: |
| 76 | print_running() |
| 77 | |
| 78 | nonlocal parallel, data, cache, expires_in, cache_storage, block_images_and_css, block_images, window_size, metadata, add_arguments,chrome_executable_path, extensions, tiny_profile, wait_for_complete_page_load, lang, headless, beep, close_on_crash, async_queue, run_async, profile, proxy, user_agent, reuse_driver, raise_exception, must_raise_exceptions, output, output_formats, max_retry, retry_wait, create_driver, create_error_logs, enable_xvfb_virtual_display, host, port, remove_default_browser_check_argument |
| 79 | |
| 80 | parallel = kwargs.get("parallel", parallel) |
| 81 | data = kwargs.get("data", data) |
| 82 | cache = kwargs.get("cache", cache) |
| 83 | expires_in = kwargs.get("expires_in", expires_in) |
| 84 | storage = kwargs.get("cache_storage", cache_storage) or FileCacheStorage |
| 85 | block_images = kwargs.get("block_images", block_images) |
| 86 | block_images_and_css = kwargs.get("block_images_and_css", block_images_and_css) |
| 87 | add_arguments = kwargs.get("add_arguments", add_arguments) |
| 88 | chrome_executable_path = kwargs.get("chrome_executable_path", chrome_executable_path) |
| 89 | extensions = kwargs.get("extensions", extensions) |
| 90 | window_size = kwargs.get("window_size", window_size) |
| 91 | metadata = kwargs.get("metadata", metadata) |
| 92 | tiny_profile = kwargs.get("tiny_profile", tiny_profile) |
| 93 | wait_for_complete_page_load = kwargs.get("wait_for_complete_page_load", wait_for_complete_page_load) |
| 94 | lang = kwargs.get("lang", lang) |
| 95 | headless = kwargs.get("headless", headless) |
| 96 | beep = kwargs.get("beep", beep) |
| 97 | close_on_crash = kwargs.get("close_on_crash", close_on_crash) |
| 98 | async_queue = kwargs.get("async_queue", async_queue) |
| 99 | run_async = kwargs.get("run_async", run_async) |
| 100 | profile = kwargs.get("profile", profile) |
| 101 | proxy = kwargs.get("proxy", proxy) |
| 102 | user_agent = kwargs.get("user_agent", user_agent) |
| 103 | reuse_driver = kwargs.get("reuse_driver", reuse_driver) |
| 104 | dont_close_driver = reuse_driver |
| 105 | output = kwargs.get("output", output) |
| 106 | output_formats = kwargs.get("output_formats", output_formats) |
| 107 | max_retry = kwargs.get("max_retry", max_retry) |
| 108 | retry_wait = kwargs.get("retry_wait", retry_wait) |
| 109 | # A Special Option passed by botasaurus server which prevents caching at database level |
| 110 | return_dont_cache_as_is = kwargs.get("return_dont_cache_as_is", False) |
| 111 | create_error_logs = kwargs.get("create_error_logs", create_error_logs) |
| 112 | raise_exception = kwargs.get("raise_exception", raise_exception) |
| 113 | create_driver = kwargs.get("create_driver", create_driver) |
| 114 | enable_xvfb_virtual_display = kwargs.get("enable_xvfb_virtual_display", enable_xvfb_virtual_display) |
| 115 | host = kwargs.get("host", host) |
| 116 | port = kwargs.get("port", port) |
| 117 | remove_default_browser_check_argument = kwargs.get("remove_default_browser_check_argument", remove_default_browser_check_argument) |
| 118 | |
| 119 | fn_name = func.__name__ |
| 120 | |
| 121 | if isinstance(proxy, list): |
| 122 | from itertools import cycle |
| 123 | cycled_proxy = cycle(proxy) |
| 124 | else: |
| 125 | cycled_proxy = None |
| 126 | |
| 127 | _driver_pool = wrapper_browser._driver_pool if dont_close_driver else [] |
| 128 | |
| 129 | def run_task(data, retry_attempt, retry_driver=None) -> Any: |
| 130 | if cache is True: |
| 131 | # Returns {"data": value} or None |
| 132 | cached = storage.get(fn_name, data, expires_in) |
no test coverage detected