Asynchronously run a Flet app using socket or web server transport. Args: main: Application entry point. Handler (function or coroutine) must have 1 parameter of instance :class:`~flet.Page`. before_main: Called after `Page` is created but before `main`.
(
main: AppCallable,
before_main: Optional[AppCallable] = None,
name: str = "",
host: Optional[str] = None,
port: int = 0,
view: Optional[AppView] = AppView.FLET_APP,
assets_dir: Optional[str] = "assets",
upload_dir: Optional[str] = None,
web_renderer: WebRenderer = WebRenderer.AUTO,
route_url_strategy: RouteUrlStrategy = RouteUrlStrategy.PATH,
no_cdn: Optional[bool] = False,
target=None,
)
| 140 | |
| 141 | |
| 142 | async def run_async( |
| 143 | main: AppCallable, |
| 144 | before_main: Optional[AppCallable] = None, |
| 145 | name: str = "", |
| 146 | host: Optional[str] = None, |
| 147 | port: int = 0, |
| 148 | view: Optional[AppView] = AppView.FLET_APP, |
| 149 | assets_dir: Optional[str] = "assets", |
| 150 | upload_dir: Optional[str] = None, |
| 151 | web_renderer: WebRenderer = WebRenderer.AUTO, |
| 152 | route_url_strategy: RouteUrlStrategy = RouteUrlStrategy.PATH, |
| 153 | no_cdn: Optional[bool] = False, |
| 154 | target=None, |
| 155 | ): |
| 156 | """ |
| 157 | Asynchronously run a Flet app using socket or web server transport. |
| 158 | |
| 159 | Args: |
| 160 | main: Application entry point. Handler (function or coroutine) must |
| 161 | have 1 parameter of instance :class:`~flet.Page`. |
| 162 | before_main: Called after `Page` is created but before `main`. |
| 163 | name: Page/app name used in web URL path when applicable. |
| 164 | host: Host/IP to bind the web server to. |
| 165 | port: TCP port to bind. If `0`, default/free port is selected. |
| 166 | view: Preferred app presentation mode. |
| 167 | assets_dir: Path to app assets directory. |
| 168 | upload_dir: Path to upload directory. |
| 169 | web_renderer: Web renderer type for web-hosted mode. |
| 170 | route_url_strategy: Route URL strategy (`path` or `hash`). |
| 171 | no_cdn: Whether to avoid loading CanvasKit, Pyodide, and fonts from CDN. |
| 172 | target: Deprecated alias for `main`. |
| 173 | """ |
| 174 | |
| 175 | if is_pyodide(): |
| 176 | __run_pyodide(main=main or target, before_main=before_main) |
| 177 | return |
| 178 | |
| 179 | if isinstance(view, str): |
| 180 | view = AppView(view) |
| 181 | |
| 182 | if isinstance(web_renderer, str): |
| 183 | web_renderer = WebRenderer(web_renderer) |
| 184 | |
| 185 | if isinstance(route_url_strategy, str): |
| 186 | route_url_strategy = RouteUrlStrategy(route_url_strategy) |
| 187 | |
| 188 | force_web_server = get_bool_env_var("FLET_FORCE_WEB_SERVER") or is_linux_server() |
| 189 | if force_web_server: |
| 190 | view = AppView.WEB_BROWSER |
| 191 | |
| 192 | env_port = os.getenv("FLET_SERVER_PORT") |
| 193 | if env_port is not None and env_port: |
| 194 | port = int(env_port) |
| 195 | |
| 196 | if port == 0 and force_web_server: |
| 197 | port = 8000 |
| 198 | |
| 199 | env_host = os.getenv("FLET_SERVER_IP") |
no test coverage detected