Skip to content

ipykernel should use default WindowsProactorEventLoopPolicy rather than WindowsSelectorEventLoopPolicy for windows #1468

@NewUserHa

Description

@NewUserHa

there were some issues discussed about this problem before #1184,
then #1190 caused #1194 reverted the above PR.
I tried the #1190 but it's unable to reproduce now in ipykernel version 7.1.

the asyncio on windows needs WindowsProactorEventLoopPolicy to have the ability to use create_subprocess_exec, which is used in practice places, for example:

  • using playwright which is a new automation tools after selenium.
import asyncio
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto("https://playwright.dev")
        print(await page.title())
        await browser.close()

await main()
# asyncio.run(main())

         on windows, the above codes is not useable in ipython, junpyter, or jupyter notebook in vscode because of WindowsSelectorEventLoopPolicy lacking of create_subprocess_exec

Even If the above #1190 is still reproduceable, then should fix it, to make asyncio create_subprocess_exec is working on windows in jupyter.

therefore I created a PR again to get rid of using WindowsSelectorEventLoopPolicy on windows, since https://github.com/ipython/ipykernel/releases/tag/v7.0.0 dropped support for python 3.9, so the PR is simply removing the whole block code of the init() that checked python version

ps.
there is a old issue before #1184 which talked about that tornado 6.1 used background threads and which may reduce performance, but result of running test in #1184 showed performance improved rather than reduced. and that asyncio on windows has ability to use a common api create_subprocess_exec should be more important than threads in background problem

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions