Guides

Scheduler is inactive. Cannot import data.

Mukunda ·7 Nov 2026 ·4 min read

Applies to: Frappe v16.34.0, ERPNext v16.35.0, bench CLI 5.27.0. Self-hosted bench on Ubuntu 22.04. Checked 2026-11. Not checked on v15.

Run these commands in your bench folder. Then check the status:

bash
bench --site <site-name> enable-scheduler
bench --site <site-name> scheduler resume
bench --site <site-name> scheduler status

Replace <site-name> with your site, for example erp.example.com. The last command must print Scheduler is enabled for site <site-name>. If it still says disabled, go to step 3 below.

Symptom#

Data Import shows this dialog when you click Start Import:

text
Scheduler Inactive
Scheduler is inactive. Cannot import data.

Data Import shows the Scheduler Inactive dialog

Other ERPNext tools show the same kind of message, for example Bank Statement Import and Ledger Merge. The RQ Job list shows a red "Scheduler: Inactive" indicator.

The second case has no message at all. The scheduler is enabled, but scheduled jobs do not run. Emails stay in the Email Queue as "Not Sent".

On a site with developer_mode on, Data Import runs the import at once. It does not show this error, even with the scheduler off. We saw this on our test site.

Cause#

Frappe treats the scheduler as inactive if any of these is true. The check is is_scheduler_inactive() in frappe/utils/scheduler.py.

  • The site is in maintenance mode (maintenance_mode is 1).
  • pause_scheduler is set in the site config or in common_site_config.json.
  • disable_scheduler is set in the config.
  • The "Enable Scheduled Jobs" setting is off. On v16 this field is hidden in System Settings, so use bench.

A new site starts with the scheduler off. The setup wizard turns it on.

The setting is only one half. Jobs run only when two processes run. bench schedule puts due jobs in the Redis queues. bench worker runs them.

Fix#

  1. Go to your bench folder and check the status.

    bash
    cd ~/frappe-bench
    bench --site <site-name> scheduler status
    bench doctor
    

    bench doctor tells you the reason. On our bench it printed:

    text
    -----Checking scheduler status-----
    Maintenance mode on for dev.localhost
    Scheduler paused for dev.localhost
    Scheduler inactive for dev.localhost
    Workers online: 1
    
  2. Enable the scheduler for the site.

    bash
    bench --site <site-name> enable-scheduler
    
  3. If enable-scheduler prints "Enabled" but the status is still "disabled", look for leftover keys.

    bash
    grep -n "maintenance_mode\|pause_scheduler" sites/common_site_config.json sites/<site-name>/site_config.json
    

    We hit this. enable-scheduler printed Enabled for dev.localhost, and scheduler status still printed Scheduler is disabled. Both keys were set to 1 in common_site_config.json.

    bench update writes these two keys at the start. It sets them back to 0 at the end. If the update fails or you stop it, the keys stay at 1. Every site on the bench is then affected. We copied this state by setting the keys by hand.

    Set both keys back to 0 for the whole bench:

    bash
    bench set-config -g maintenance_mode 0
    bench set-config -g pause_scheduler 0
    

    To fix one site only, run these commands. A key in the site's site_config.json wins over common_site_config.json.

    bash
    bench --site <site-name> set-maintenance-mode off
    bench --site <site-name> scheduler resume
    
  4. Check that the scheduler and worker processes run. A status of "enabled" only means the setting is on.

    Open System Health Report from the awesome bar. With both processes stopped, our report showed 0 workers and "Process Not Found":

    System Health Report with no workers and no scheduler process

    bench doctor printed Workers online: 0. The RQ Job indicator reads only the setting, so it does not show this case.

    On a development bench, bench start runs the processes from the Procfile. Check that it has a schedule: line and a worker: line. We removed these two lines to copy the problem.

    On a production bench, supervisor runs them. Check with:

    bash
    sudo supervisorctl status
    

    Start any stopped worker or schedule program. The program names include your bench name, for example frappe-bench-workers:. We did not test the supervisor commands for this guide.

  5. Check that a worker listens to the long queue.

    On v16, jobs with the frequency "Hourly Maintenance", "Daily Maintenance", "Weekly Long" or "Monthly Long" go to the long queue. On our site, 58 of 82 Scheduled Job Types use it.

    We started the worker with bench worker --queue short,default only. Emails went out, but the Auto Repeat job stayed in the queue:

    RQ Job list with a queued job in the long queue

    bench doctor showed Queue: long with Number of Jobs: 1. After we started a worker for all queues, the job ran within a minute. A production bench often has a separate long worker. If that one is stopped, only the long jobs stop.

Check that it worked#

  • bench --site <site-name> scheduler status prints Scheduler is enabled for site <site-name>.
  • System Health Report shows Scheduler Status "Active" and at least 1 worker.

System Health Report with an active scheduler and one worker

  • Open the Scheduled Job Type frappe.email.queue.flush. Its Last Execution is less than 4 minutes old. This job runs every 4 minutes by default.
  • The Scheduled Job Log list gets new rows with the status "Complete". Jobs with the frequency "All" or "Cron" do not write a log, unless you tick "Create Log".

If it still fails#

  • A job that runs but fails shows the status "Failed" in Scheduled Job Log. Open the row to read the traceback.
  • A scheduled Server Script also needs Server Scripts enabled. See Server Scripts are disabled.
  • On Frappe Cloud you cannot run bench commands. We did not test this case.
  • Look in ~/frappe-bench/logs/worker.error.log for the newest error. Post it on discuss.frappe.io with your versions (bench version).

Sources#

Need help? Hire a Frappe developer