Skip to content

Conversation

@jedcunningham
Copy link
Member

Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server.

With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.

Closes #52270

Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
@jedcunningham
Copy link
Member Author

I should say, I think this is a safer default and (in my testing at least) avoids the timeout problems we've seen in #52270 even in a cpu constrained environment.

My scale testing shows this change is roughly equivalent with 1 core, and a lot faster with half a core (especially for heavier requests).

@kaxil kaxil added this to the Airflow 3.1.0 milestone Sep 16, 2025
@jedcunningham jedcunningham merged commit 87fc469 into apache:main Sep 16, 2025
60 checks passed
@jedcunningham jedcunningham deleted the workers_to_one branch September 16, 2025 14:03
kaxil pushed a commit that referenced this pull request Sep 16, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now. (cherry picked from commit 87fc469)
suman-himanshu pushed a commit to suman-himanshu/airflow that referenced this pull request Sep 17, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
dstandish pushed a commit to astronomer/airflow that referenced this pull request Sep 19, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now. (cherry picked from commit 87fc469)
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Sep 30, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 1, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 2, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 3, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 4, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 5, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 5, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 7, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 8, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 9, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 10, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 11, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 12, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 14, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 15, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 17, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
abdulrahman305 bot pushed a commit to abdulrahman305/airflow that referenced this pull request Oct 19, 2025
Change the default number of API server workers from 4 to 1 and add guidance to deploy multiple API servers for scaling instead of increasing workers per server. With FastAPI, sync code runs in an external thread pool, making multiple workers within a single api server less necessary than it was in our flask days. And with uvicorns new spawn behavior instead of fork, it means no shared copy-on-write memory between workers, so it's better to scale horizontally now.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment