datasette-ports 0.4 shows the PIDs of running Datasette instances for the Python 3.15 profiler
Simon Willison has released datasette-ports 0.4, a plugin that finds and lists every Datasette instance on the current machine. The new version works with the latest Datasette release and shows the PID of each process it finds. The reason: a PID makes it easier to attach the new sampling profiler in Python 3.15 to a server that is already running. The release is small, but it shows how the author tunes his tools to new language features. • The plugin is compatible with the current version of Datasette. • The instance list now includes the PID. • This helps attach the Python 3.15 profiler.
AI-processed from Simon Willison; edited by Hamidun News
Simon Willison, the creator of Datasette, has released version 0.4 of his datasette-ports plugin. The plugin discovers and lists all Datasette instances running on the current machine. Version 0.4 works with the latest Datasette release and also shows the PID of each process it finds. The change is small, but it has a clear practical purpose: making it easier to attach the new profiler from Python 3.15.
What changed in 0.4
Datasette is an open-source tool for exploring and publishing data, primarily from SQLite. Developers who use it heavily can easily end up with several servers on different ports: one for an experiment, one for a working database, and a third forgotten since last week. datasette-ports solves that everyday problem. It shows which instances are currently alive and where to find them.
Release 0.4 contains two changes:
- the plugin works with the latest version of Datasette again;
- the list of discovered instances now includes the process ID (PID).
The announcement gives no details about the internals. The author limited himself to two sentences and a link to the release on GitHub.
Why the PID was needed
Willison explains his motivation with a single link: knowing the PID makes it easier to attach the new Python 3.15 profiler. The link points to the "sampling profiler" section of his note on Python 3.15. Judging by that note, the profiler is designed to work with an already running process. You have to specify which process to attach to, and the PID is the most direct identifier for that.
A sampling profiler does not trace every function call. It takes "snapshots" of the execution stack at a set frequency and uses them to show where the program spends its time. This approach usually adds less overhead on a live service than full tracing. That makes it convenient to point at a running Datasette without stopping or restarting it.
The workflow is simple. The plugin finds all Datasette instances on the machine and prints their PIDs. The profiler attaches to the right process. Previously, you had to find the PID by hand between those steps, using ps, lsof, or a task manager.
Practical takeaway
For most Datasette users, the release changes nothing. It is aimed at people who keep several servers running at once and want to figure out why one of them responds slowly. Typical causes include a heavy SQL query, a slow plugin, or a poor configuration. In such cases, you can open the list from datasette-ports, take the PID of the instance in question, and pass it to the Python 3.15 profiler.
If you already use the plugin, updating to 0.4 is worth doing at least for compatibility with the current Datasette. If you don't, and you usually run a single server, there is little to gain: you can find the PID easily without it.
For the industry, this is more of a marker. New diagnostic tools in Python itself are starting to attract small utilities in the ecosystem. The author of a popular project adapts his tools to them on the day of the release, and that is usually the best way to test a new feature under a real workload. The announcement includes no results from such measurements, but Willison will probably publish his conclusions about the profiler's usefulness for Datasette separately.
Access Frontier LLMs & Multimodal AI in One Workspace
Discover NomadNet AI (nomadnet.ai) — unified access to frontier language models, research synthesis, and multimodal workflows.
The AI world, distilled — once a week
Seven stories that actually mattered, hand-picked. No noise, no reposts, no press releases.
Done! Check your inbox for a confirmation.