Apache Superset with Celery workers vs a single web process

A single Superset web process with a metadata database covers dashboards and SQL Lab, but alerts, reports, async queries and thumbnails need the caching layer and Celery worker and beat processes. This page shows when each shape fits and what it changes for operations and upgrades.

On this page

When a single web process is enough and when Celery workers become necessary

A team deciding how many Superset processes to run can answer the question from the feature list the business actually needs. A web application plus a production metadata database is enough for interactive dashboards, SQL Lab exploration and chart building, where a user clicks, waits for results and moves on. The architecture documentation lists the Flask and React application, a metadata database, an optional caching layer and optional Celery worker and beat processes as separate components, so the single-process option means accepting that the optional pieces are absent. Start with the metadata database choice, since the documentation recommends PostgreSQL or MySQL in production and does not recommend the SQLite default for production use.

Scheduled reports, alerts, async queries and dashboard thumbnails are the features that change the answer. According to the architecture documentation, these require the caching layer and worker components, and most installations use Redis and Celery for them. If stakeholders have asked for emailed or Slack-delivered reports, threshold alerts, or long-running queries that should not hold a browser session open, plan for celery worker and celery beat processes, a Redis broker and cache, and monitoring for each. Confirm the exact worker and beat commands, broker settings and cache configuration against the current Superset architecture documentation and the configuration reference for your release line.

Write the requirement down before choosing a topology. List each report, alert and async workflow, its owner, its delivery channel and how often it runs, then count the services that list needs. A single web process with no background features is simpler to size and upgrade, but moving to workers later means adding Redis, configuring Celery and testing thumbnails and alerts against your metadata database under load. Ask your implementation partner or internal platform team to confirm how the worker processes will be monitored and restarted, because a dashboard that loads while its scheduled reports silently stop is the failure most likely to reach stakeholders first.

Which shape fits which team situation

If analysts open existing dashboards, build charts and run queries in SQL Lab that return synchronously, the architecture can stay small. The Superset architecture documentation lists four components: the Flask and React application, a metadata database, an optional caching layer and optional Celery worker and beat processes. For interactive use, the web application and a supported metadata database are the core pieces, and the cache and workers are optional.

  • Required components: the web application and a PostgreSQL or MySQL metadata database, which the documentation says is tested for production use.
  • Optional components: the caching layer and Celery workers can be left out while no feature depends on them.
  • Metadata database: the SQLite default of Quickstart and PyPI installs is not recommended for production, so plan for a real database from the start.
  • Scope limit: the documented dependency means scheduled deliveries and background jobs cannot be added to this shape without changing it.
  • Upgrade effort: fewer moving parts means fewer services to back up and patch during the documented upgrade steps.

Before committing, confirm with your own usage that no team will need alerts, scheduled reports or asynchronous queries in the next upgrade cycle.

Web-only and web plus Celery compared

This table compares a Superset install that runs only the web application and metadata database against one that adds a caching layer and Celery worker and beat processes. Read each row as the question to answer for your own deployment, and treat the web-only column as fine for evaluation and light use only where your features do not need workers.

FactorWeb application and metadata database onlyWeb plus Redis and Celery workers
Components to runFlask and React application and a metadata databaseApplication, metadata database, Redis caching layer, Celery worker and Celery beat
Features availableInteractive dashboards and SQL Lab queries; no scheduled alerts, reports or thumbnailsAdds async queries, alerts and reports, and dashboard thumbnails
Metadata database requirementPostgreSQL or MySQL for production; SQLite default is not recommended for productionSame PostgreSQL or MySQL requirement, shared by web and workers
Caching layerOptional; query results are not cached by a dedicated serviceRequired for the worker-dependent features; most installs use Redis
Monitoring surfaceWeb process health, database health and application logsAdds Redis health, worker and beat process health, queue depth and scheduled task runs
Sizing inputsConcurrent dashboard viewers and query load on the databaseAdds queue volume, report frequency, worker concurrency and thumbnail rendering load
Upgrade stepsBack up metadata database, run database upgrade and init, test in stagingSame steps, plus restart and version-match workers and beat with the web application
If a worker is downNot applicable; no worker-dependent features existAsync queries stall, scheduled alerts and reports are missed, and thumbnails do not refresh
Who should confirmPlatform team checks the chosen features against the Superset architecture documentationPlatform team confirms Redis and Celery sizing, high availability and alerting with the vendor docs and their own environment

The extra services a Celery deployment must run and monitor

A single web process needs the Superset application and a metadata database. Once you add async queries, alerts and reports, or dashboard thumbnails, the caching layer and Celery workers join the stack, and each one fails in its own way. The cards below cover each component, what breaks visibly when it stops, and what to watch.

Redis as cache and broker

Redis serves two roles in a Celery setup: a caching layer for query results and a message broker that queues tasks for the workers. The Superset architecture documentation says most installations use Redis and Celery for async queries, alerts and reports, and thumbnails. If Redis stops, cached dashboards reload slowly, and queued work stops moving. Monitor memory use, eviction behavior, connection counts and persistence settings, and confirm with your team whether the broker and the cache share one instance.

Celery worker processes

Workers run the background jobs: long SQL queries submitted asynchronously, scheduled alert checks, report delivery and thumbnail generation. When no worker is running, these features look configured but never complete, so users see spinners or missing reports rather than a clear error. Monitor queue depth, task failure rates, worker memory and task duration. Size the worker count against your heaviest query and report schedules, and test each job type after every upgrade.

Celery beat scheduler

Beat is the scheduler that triggers recurring work, such as alert evaluations and scheduled report sends, and places those tasks on the queue. It is a separate process from the workers. If beat stops, workers stay healthy and idle, and scheduled alerts and reports silently stop firing. Monitor that beat is running, that it has a single active instance, and that scheduled tasks appear on the queue at their expected times. Keep a check that alerts still fire on a known test condition.

The Superset web process

The web process serves the Flask and React application, dashboards and SQL Lab. It also enqueues work for the workers, so a worker outage often shows up first as a web symptom, such as a query that never returns. Monitor HTTP health, response times, error rates and the SECRET_KEY configuration that must be set before startup. Confirm how many web replicas you run and whether they share one configuration.

The production metadata database

Superset stores dashboards, charts, users, roles and scheduled jobs in its metadata database. The architecture documentation says PostgreSQL and MySQL are the tested options and that the SQLite default and the Docker Compose PostgreSQL container are not recommended for production. Monitor connection limits, storage growth, replication or backup status and the time of the last successful backup. Confirm the supported version range in the configuration documentation before you provision.

Monitoring and log stack

Each extra component writes its own logs, and a Celery failure often leaves no trace in the web logs. Plan central log collection across the web process, workers, beat and Redis, with alerts on task failures, queue backlog and missing scheduled runs. Ask your team who owns on-call for each component and which dashboards show queue depth. The monitoring stack is also one more service you must back up, patch and size.

How Celery changes sizing and upgrade planning

Adding Celery workers and beat turns a single Superset deployment into several processes that must be sized and upgraded as one system. Each worker process pulls jobs from the Redis broker and runs async queries, alert and report jobs, and thumbnail generation, so its CPU, memory and database connection use add to the load on the metadata database and the caching layer. Confirm in your own environment how many worker processes you need for your expected alert, report and query volume, and measure connection counts on the metadata database after you add them. The beat process must run as a single scheduler, because two beat processes would trigger scheduled alerts and reports twice. Check that your process manager, Kubernetes deployment or Compose file runs exactly one beat instance and that a restart policy will not start a second one during a rolling update.

Upgrades must cover the web process and every worker together, because they share the same codebase, configuration and metadata database. Follow the documented sequence: back up the metadata database, run superset db upgrade and superset init, and test the upgrade in staging first. Read UPDATING.md for breaking changes between your current and target versions before you schedule the change, and plan for the web and worker images to be replaced in the same window. The Superset upgrade documentation covers these steps, and the Superset upgrading guide is the natural next read for the exact order.

Before any upgrade or secret rotation, confirm three items: that SECRET_KEY is set explicitly in every process's configuration, since Superset requires a user-specified key to start; that you know how PREVIOUS_SECRET_KEY will be used to rotate the key without breaking existing encrypted data; and that your staging environment uses the same Redis, Celery and metadata database versions as production. Also confirm the supported metadata database versions for your target release in the configuration documentation, and the version of Redis you plan to run, since that is a dependency your team will now own.

Upgrades, backups, monitoring and skills for each shape

This table compares what each Superset shape asks of the team on upgrades, backups, monitoring, on-call skills and failure modes, using the steps Superset documents. Read it as a list of operating duties: the single web process keeps them to the web app and metadata database, while the Celery shape adds Redis and worker and beat processes to every duty. The main takeaway is that the Celery shape roughly doubles the surfaces the team must patch, back up and watch, even though the upgrade steps stay the same.

AreaWeb process onlyWeb plus Redis and Celery
Upgrade stepsBack up the metadata database, run superset db upgrade and superset init, then test in stagingSame documented steps, plus stopping and restarting worker and beat processes so they run the same Superset version as the web app
Breaking changesCheck UPDATING.md for changes between versions before upgradingCheck UPDATING.md too, and confirm that task and cache configuration still matches the new release
Backup scopeMetadata database, including dashboards, charts, datasets, users and roles, plus the SECRET_KEYMetadata database and SECRET_KEY, plus Redis if it holds state you need to keep; cached results can usually be rebuilt
MonitoringWeb process health, metadata database connections and query latencyAdds Redis availability, Celery worker count and queue backlog, and beat schedule execution for alerts and reports
Failure modesDashboards and SQL Lab fail or slow down when the web process or metadata database failsAsync queries, alerts, reports and thumbnails can stall while the web UI still loads, so a silent worker outage may go unnoticed
On-call skillsFlask application deployment, database administration and reverse proxy troubleshootingAdds Redis operations, Celery worker and beat troubleshooting, and reading task logs alongside the web stack
What the team ownsWeb containers or processes, metadata database, configuration and backupsAll of the single shape, plus Redis, worker and beat process lifecycle, scaling and their monitoring
Confirm with the vendorMetadata database versions supported for your Superset releaseRedis and Celery versions that your Superset release documents, and the worker configuration for your deployment method

Questions teams ask before running Celery workers

Can a web-only Superset send scheduled reports?

No. According to the Superset architecture documentation, alerts and reports, async queries and dashboard thumbnails require the caching layer and the worker components. A web-only install runs the Flask and React application with a metadata database, so scheduled reports and alerts depend on adding Redis and Celery worker and beat processes. If your plan includes scheduled delivery, treat the workers as part of the base design, not an optional add-on. Confirm the exact configuration for your chosen Superset version in the Superset architecture documentation before you commit.

How much extra effort does the Celery setup add?

It adds services, not just configuration. Besides the web application and metadata database, you run a cache broker (most installations use Redis), one or more Celery worker processes and a Celery beat process for scheduled tasks. Each one needs its own process supervision, health checks, logs, resource limits and restart behavior. Worker sizing also matters because report rendering and thumbnail generation can be resource-heavy. Expect more work in monitoring, backup scope and upgrade testing. The exact effort depends on your platform (Kubernetes, Docker Compose or a PyPI install) and on how many dashboards and recipients you serve, so ask for the component list and monitoring plan in any quote.

Can our team run Celery workers without outside help?

It depends on your team's experience with Python services, Redis, and container or Kubernetes operations. The Superset documentation gives you the architecture, configuration keys and upgrade steps, but it does not replace on-call readiness for queues that can back up silently. Teams with a platform group that already runs Redis and Python workers usually have the skills in-house. Teams without those skills should either train staff or consider outside help for the initial build and runbooks. DeployOpen plans, implements, hardens, documents and supports self-hosted platforms inside your environment, and most engagements are fixed-scope with the scope agreed in writing before work starts.

How long does a move from web-only to Celery take?

The timeline depends on scope, and it must be quoted against a written scope. The main variables are the deployment method, whether Redis is already available, the number of alerts and reports to migrate, how many environments need the change, and how much testing your staging process requires. The Superset upgrade documentation recommends backing up the metadata database, running the database upgrade and initialization commands, and testing in staging first, so plan for staged validation rather than a single cutover. Ask any provider, including DeployOpen, for a fixed-scope proposal with deliverables and dates listed.

What does the work need from our side?

You need to supply access and decisions. Typical inputs include a target environment (cloud account, data center or air-gapped network), a metadata database you are willing to run in production (the Superset documentation tests PostgreSQL and MySQL and does not recommend the SQLite default for production), a secrets process for SECRET_KEY, and named owners for alerts, report recipients and on-call escalation. You also need a staging environment that matches production closely enough to test scheduled delivery, and a list of the dashboards and datasets that will produce reports. Confirm any SMTP or messaging channel your reports use, since those depend on your own mail or chat systems.

What drives the cost of running Celery workers?

Cost comes from three places: people, infrastructure and any outside services. Superset itself is Apache-2.0 with no paid edition, so license fees are not the driver. Infrastructure cost rises with the number of worker and beat processes, the Redis footprint, the metadata database size, and the compute needed for report rendering and thumbnails. Ongoing cost includes monitoring, on-call time, upgrades and staging environments. One-time cost covers the initial build, documentation and testing. Ask any quote to itemize these components and to state which parts recur, such as support retainers or upgrade work.

Moving from a web-only install to a Celery deployment

This sequence takes a running web-only Superset to a deployment with Redis, Celery workers and beat, validated against the features that depend on them, with a rollback path agreed before the cutover.

  1. Confirm which features need workers

    The team lists the features it intends to use, such as async SQL Lab queries, alerts and reports, and dashboard thumbnails. The Superset architecture documentation says alerts and reports, async queries and dashboard thumbnails require the caching layer and worker components, so any of these on the list means Redis and Celery are in scope. Ask the platform owner to write the list down and mark which features are optional. The output is a signed-off feature list that drives every later step.

  2. Provision Redis and a production metadata database

    The platform team provisions Redis for the caching layer and Celery broker, and moves the metadata database off the SQLite default. The architecture documentation says SQLite and the Docker Compose PostgreSQL container are not recommended for production, and that PostgreSQL and MySQL are the tested options. Confirm the exact versions against the configuration documentation, which lists PostgreSQL 10 to 17 and MySQL 5.7 and 8.x. Take a backup of the metadata database before any migration, and confirm that restore has been tested. The output is a reachable production database and a verified backup.

  3. Migrate the metadata database and secrets

    The team copies existing metadata into the new database and confirms the SECRET_KEY set in the current install is carried over unchanged. The configuration documentation says Superset requires a user-specified SECRET_KEY to start, and supports rotation through PREVIOUS_SECRET_KEY, so a changed key can break access to stored credentials. Run the upgrade steps from the upgrade documentation, including superset db upgrade and superset init, in a staging copy first. The output is a staging instance that loads with existing dashboards, users and data sources intact.

  4. Deploy Celery workers and beat

    The platform team starts the Celery worker and beat processes against the same Superset configuration and the Redis broker, using the same application image or code version as the web process. Beat schedules alerts and reports, so it must run as a single instance that the team monitors. Confirm process health through the team's supervisor or orchestrator, and confirm each worker can reach the metadata database and the cache. The output is running worker and beat processes with logs that show a successful connection to Redis.

  5. Validate alerts, reports and thumbnails in staging

    Testers create one async SQL Lab query, one scheduled report and one alert in staging, then confirm each completes and that dashboard thumbnails render. Each check should be run against the features on the signed-off list, and failures should be traced to the worker, the broker or the web process. Confirm delivery channels such as email or messaging work from the worker host, since outbound network rules often differ from the web tier. The output is a dated test record showing each feature passed or has a documented fix.

  6. Rehearse the cutover and rollback

    The team writes the cutover runbook: the freeze window, the final metadata backup, the order in which web, workers and beat are switched, and the steps to return to the web-only install. The rollback should be tested in staging by restoring the pre-cutover backup and confirming the earlier version still serves dashboards. Check UPDATING.md for breaking changes between the installed and target versions before the rehearsal. The output is a runbook with a rehearsed rollback that the on-call owner has read.

  7. Cut over and monitor the new processes

    The team applies the runbook in production, starts workers and beat, and checks that scheduled reports and alerts run on their next cycle. Monitoring should cover queue depth on Redis, worker restarts, beat health and the metadata database connection count, with alerts routed to the platform owner. Keep the rollback path available until the team has seen at least one full cycle of scheduled jobs succeed, and record the result. The output is a production deployment with monitoring active and a signed-off decision to close the rollback window.

When to drop workers and keep the web process only

A web-only Superset is a sound choice when the business needs interactive dashboards and SQL Lab, and nothing else. In that setup the deployment is the Flask and React application plus its metadata database, with the caching layer and Celery worker and beat processes left out. The architecture documentation ties async queries, alerts and reports, and dashboard thumbnails to the caching layer and workers, so if none of those features are in use, there is no need to run Redis or Celery at all. Fewer services mean fewer failure points, fewer components to patch, and a smaller upgrade surface. Before you commit, confirm which features your users and owners rely on, and check the Superset architecture documentation against that list.

The trade-off is that scheduled delivery and alerting move somewhere else. If a weekly PDF to finance, a threshold alert on a revenue table, or a thumbnail-driven dashboard gallery is part of the requirement, a web-only design cannot cover it, and you will need another scheduler or alerting tool and a clear owner for it. Ask each dashboard owner whether any chart is sent on a schedule, triggers a notification, or relies on cached async results, and record the answers before you decide. Also remember that the metadata database remains a single dependency in either design, and the supported versions and SECRET_KEY requirement apply regardless of worker choice.

Keep the decision reversible. Adding workers later means provisioning Redis, configuring the cache and worker settings, and running the upgrade steps on a larger set of components, so plan that work as a deliberate change rather than a quick toggle. Test the web-only build in staging with a representative set of dashboards, then review the findings with the teams who own the reports, so that any scheduled delivery you move to another tool has a named owner and an acceptance check.

How DeployOpen scopes and runs Superset deployments

DeployOpen plans, implements, hardens, backs up, upgrades, documents and supports self-hosted open-source platforms inside the client's own infrastructure. For Apache Superset, that means deciding in writing whether the deployment stays a web process with a metadata database or adds Redis, Celery workers and beat, then building and handing over the result with the operating procedures to match.

How we scope

  • Confirm which features need workers: async queries, alerts and reports, and dashboard thumbnails.
  • List the metadata database, caching layer, worker processes and monitoring each option adds.
  • Agree the scope, deliverables and timelines in writing before any work starts, as engagements are fixed-scope.
  • Record the Superset version, the metadata database version and the target hosting environment in the scope.

How we build

  • Deploy Superset inside your cloud account, data center or air-gapped network with the chosen process layout.
  • Configure SECRET_KEY, identity integration and role mapping as documented for your environment.
  • Test async queries, scheduled reports and thumbnails in staging before anything reaches production users.
  • Run security testing of the deployment as a separate, agreed activity where the scope includes it.

How we hand over

  • Document the process layout, service dependencies, queue and worker health checks, and restart order.
  • Provide the upgrade runbook covering metadata database backups, superset db upgrade, superset init and UPDATING.md review.
  • Walk your operations team through monitoring for Redis, workers and beat, with the alerts agreed in scope.
  • Deliver configuration and evidence for compliance assessments, noting that auditors and certification bodies issue any attestations.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers after handover.
  • Retainers can cover Superset release reviews, staging upgrades and worker queue maintenance on your schedule.
  • Ask for the support scope, response arrangements and upgrade windows in the written quote before committing.
  • Quotes follow from the written scope, so any change to the worker design is priced as a scope change.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.