Install & Compatibility
Where this runs
tested against v3.1.4 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.920 runs
installs and imports cleanly · install 0.0s · import 0.000s · 443.6MB
glibcpy 3.10–3.920 runs
installs and imports cleanly · install 22.2s · import 0.000s · 448MB
428MB installed
● package 428MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
Job
✓ from nautobot.extras.jobs import Job
✗ from nautobot.apps.jobs import Job
This quickstart demonstrates defining a basic Nautobot Job, a common way to extend Nautobot's functionality using Python. The `Job` class provides methods for interacting with Nautobot models and logging. This code is designed to be saved within a Nautobot job directory and executed via the Nautobot UI or `nautobot-server runjob` command, making use of the library's internal context.
from nautobot.dcim.models import Device
from nautobot.extras.jobs import Job
# Example: A simple job to list devices
class MyFirstJob(Job):
name = "My First Nautobot Job"
description = "A simple job to list devices and log their names."
task_queue = "default"
def run(self, data, commit):
self.log_info(message="Starting MyFirstJob...")
devices = Device.objects.all()
self.log_info(f"Found {devices.count()} devices in the database.")
for device in devices:
self.log_info(f"- Device: {device.name}, Status: {device.status}")
self.log_success("Job completed successfully!")
return "Success"
# To make this job available in Nautobot:
# 1. Save this code as 'my_job.py' (or similar) in a directory configured for Nautobot jobs.
# 2. In the Nautobot UI, navigate to Jobs, find 'My First Nautobot Job', and click 'Run'.
# This quickstart demonstrates how to define a Job that interacts with Nautobot models
# and is executed by the Nautobot platform.
nautobot-server --version
Debug
Known issues
breakingNautobot 3.1 drops support for PostgreSQL versions 12.x and 13.x. A minimum of PostgreSQL 14.0 is now required.fixUpgrade your PostgreSQL database to version 14.0 or higher before upgrading to Nautobot 3.1.
affects: 3.1.0+
breakingNautobot 3.1 upgrades its core Django dependency to Django 5.2. This may introduce breaking changes for custom plugins or apps that rely on specific Django versions or deprecated features, particularly if they are not actively maintained.fixReview Django 5.2 release notes and test custom plugins thoroughly before upgrading. Update plugin code to adhere to Django 5.2 API changes.
affects: 3.1.0+
gotchaSecurity updates in patch releases often mention indirect dependencies (e.g., `pygments`, `pyasn1`, `pyjwt`) that do not automatically update with `pip install --upgrade nautobot`. You must manually update your Python environment's global or virtual environment dependencies.fixRegularly review Nautobot release notes for indirect dependency security updates. Manually run `pip install --upgrade <package_name>` for affected packages or reinstall your virtual environment.
affects: All versions
gotchaSignificant API changes can occur between major Nautobot versions (e.g., from 2.x to 3.x), particularly affecting plugin and job development due to underlying Django and Django REST Framework upgrades. Existing custom code may require substantial refactoring.fixConsult the official Nautobot upgrade guides for detailed migration instructions for each major version. Plan for code review and testing of custom plugins and jobs.
affects: Major version upgrades (e.g., 2.x -> 3.x)
Upgrade
Version history
3.1.4latest on PyPI · released Jun 8, 2026
Audit
Dependencies
PostgreSQLrequiredNautobot is a Django application and requires a PostgreSQL database. Version 14.0 or newer is required for Nautobot 3.1+.
RedisrequiredRequired for caching and task queuing.