# Calibration graphs on UI

**URL:** <https://forum.pioreactor.com/t/calibration-graphs-on-ui/640>\
**Category:** User interface\
**Created:** [January 28, 2025, 6:46pm UTC](https://forum.pioreactor.com/t/calibration-graphs-on-ui/640 "2025-01-28T18:46:24Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![HillsLaura](https://forum.pioreactor.com/letter_avatar_proxy/v4/letter/h/a587f6/32.png) [@HillsLaura](https://forum.pioreactor.com/u/HillsLaura)\
**Post date:** [January 30, 2025, 6:53pm UTC](https://forum.pioreactor.com/t/calibration-graphs-on-ui/640/5 "2025-01-30T18:53:09Z")

</div>

Hey Cam,

I ran the logs on the worker and this is what came up - I’m not super knowledgeable in Python. I then did the reset and ran those logs and those are attached as well. The curl line did the same initial thing even after the reset.

Thanks

pioreactor@pioreactor02:~ $ pio logs  
2025-01-28T18:24:17+0000 [pioreactorui-pioreactor02] DEBUG Starting pioreactorui-pioreactor02=25.1.21 on pioreactor02…  
2025-01-28T18:24:17+0000 [pioreactorui-pioreactor02] DEBUG .env={‘DOT\_PIOREACTOR’: ‘/home/pioreactor/.pioreactor/’, ‘WWW’: ‘/var/www/pioreactorui/’, ‘PIO\_EXECUTABLE’: ‘’, ‘PIOS\_EXECUTABLE’: ‘’}  
2025-01-28T18:24:40+0000 [pioreactorui-pioreactor02] ERROR Exception on /unit\_api/calibrations [GET]  
Traceback (most recent call last):  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 1511, in wsgi\_app  
response = self.full\_dispatch\_request()  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 919, in full\_dispatch\_request  
rv = self.handle\_user\_exception(e)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 917, in full\_dispatch\_request  
rv = self.dispatch\_request()  
^^^^^^^^^^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 902, in dispatch\_request  
return self.ensure\_sync(self.view\_functions[rule.endpoint])(\*\*view\_args) # type: ignore[no-any-return]  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File “/var/www/pioreactorui/pioreactorui/unit\_api.py”, line 625, in get\_all\_calibrations  
with local\_persistent\_storage(“active\_calibrations”) as cache:  
File “/usr/lib/python3.11/contextlib.py”, line 137, in **enter**  
return next(self.gen)  
^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/pioreactor/utils/ **init**.py”, line 413, in local\_persistent\_storage  
with cache(cache\_name, db\_path=config.get(“storage”, “persistent\_cache”)) as c:  
File “/usr/local/lib/python3.11/dist-packages/pioreactor/utils/ **init**.py”, line 295, in **enter**  
self.cursor.executescript(  
sqlite3.OperationalError: attempt to write a readonly database  
2025-01-28T18:26:43+0000 [pioreactorui-pioreactor02] DEBUG Starting pioreactorui-pioreactor02=25.1.21 on pioreactor02…  
2025-01-28T18:26:43+0000 [pioreactorui-pioreactor02] DEBUG .env={‘DOT\_PIOREACTOR’: ‘/home/pioreactor/.pioreactor/’, ‘WWW’: ‘/var/www/pioreactorui/’, ‘PIO\_EXECUTABLE’: ‘’, ‘PIOS\_EXECUTABLE’: ‘’}  
2025-01-28T18:27:17+0000 [pioreactorui-pioreactor02] ERROR Exception on /unit\_api/calibrations [GET]  
Traceback (most recent call last):  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 1511, in wsgi\_app  
response = self.full\_dispatch\_request()  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 919, in full\_dispatch\_request  
rv = self.handle\_user\_exception(e)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 917, in full\_dispatch\_request  
rv = self.dispatch\_request()  
^^^^^^^^^^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 902, in dispatch\_request  
return self.ensure\_sync(self.view\_functions[rule.endpoint])(\*\*view\_args) # type: ignore[no-any-return]  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File “/var/www/pioreactorui/pioreactorui/unit\_api.py”, line 625, in get\_all\_calibrations  
with local\_persistent\_storage(“active\_calibrations”) as cache:  
File “/usr/lib/python3.11/contextlib.py”, line 137, in **enter**  
return next(self.gen)  
^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/pioreactor/utils/ **init**.py”, line 413, in local\_persistent\_storage  
with cache(cache\_name, db\_path=config.get(“storage”, “persistent\_cache”)) as c:  
File “/usr/local/lib/python3.11/dist-packages/pioreactor/utils/ **init**.py”, line 295, in **enter**  
self.cursor.executescript(  
sqlite3.OperationalError: attempt to write a readonly database  
2025-01-28T18:27:45+0000 [pioreactorui-pioreactor02] ERROR Exception on /unit\_api/calibrations [GET]  
Traceback (most recent call last):  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 1511, in wsgi\_app  
response = self.full\_dispatch\_request()  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 919, in full\_dispatch\_request  
rv = self.handle\_user\_exception(e)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 917, in full\_dispatch\_request  
rv = self.dispatch\_request()  
^^^^^^^^^^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 902, in dispatch\_request  
return self.ensure\_sync(self.view\_functions[rule.endpoint])(\*\*view\_args) # type: ignore[no-any-return]  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File “/var/www/pioreactorui/pioreactorui/unit\_api.py”, line 625, in get\_all\_calibrations  
with local\_persistent\_storage(“active\_calibrations”) as cache:  
File “/usr/lib/python3.11/contextlib.py”, line 137, in **enter**  
return next(self.gen)  
^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/pioreactor/utils/ **init**.py”, line 413, in local\_persistent\_storage  
with cache(cache\_name, db\_path=config.get(“storage”, “persistent\_cache”)) as c:  
File “/usr/local/lib/python3.11/dist-packages/pioreactor/utils/ **init**.py”, line 295, in **enter**  
self.cursor.executescript(  
sqlite3.OperationalError: attempt to write a readonly database  
2025-01-28T18:28:05+0000 [pioreactorui-pioreactor02] ERROR Exception on /unit\_api/calibrations [GET]  
Traceback (most recent call last):  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 1511, in wsgi\_app  
response = self.full\_dispatch\_request()  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 919, in full\_dispatch\_request  
rv = self.handle\_user\_exception(e)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 917, in full\_dispatch\_request  
rv = self.dispatch\_request()  
^^^^^^^^^^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/flask/app.py”, line 902, in dispatch\_request  
return self.ensure\_sync(self.view\_functions[rule.endpoint])(\*\*view\_args) # type: ignore[no-any-return]  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File “/var/www/pioreactorui/pioreactorui/unit\_api.py”, line 625, in get\_all\_calibrations  
with local\_persistent\_storage(“active\_calibrations”) as cache:  
File “/usr/lib/python3.11/contextlib.py”, line 137, in **enter**  
return next(self.gen)  
^^^^^^^^^^^^^^  
File “/usr/local/lib/python3.11/dist-packages/pioreactor/utils/ **init**.py”, line 413, in local\_persistent\_storage  
with cache(cache\_name, db\_path=config.get(“storage”, “persistent\_cache”)) as c:  
File “/usr/local/lib/python3.11/dist-packages/pioreactor/utils/ **init**.py”, line 295, in **enter**  
self.cursor.executescript(  
sqlite3.OperationalError: attempt to write a readonly databases

pioreactor@pioreactor02:~ $ sudo systemctl status lighttpd.service  
● lighttpd.service - Lighttpd Daemon  
Loaded: loaded (/etc/systemd/system/lighttpd.service; enabled; preset: enabled)  
Active: active (running) since Tue 2025-01-28 18:33:58 GMT; 27s ago  
Process: 852 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exited, status=0/SUCCESS)  
Main PID: 857 (lighttpd)  
Tasks: 7 (limit: 494)  
CPU: 3.961s  
CGroup: /system.slice/lighttpd.service  
├─857 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf  
└─862 /usr/bin/python3 /var/www/pioreactorui/main.fcgi

Jan 28 18:33:57 pioreactor02 systemd[1]: Starting lighttpd.service - Lighttpd Daemon…  
Jan 28 18:33:58 pioreactor02 systemd[1]: Started lighttpd.service - Lighttpd Daemon.

---

_[View the full topic](https://forum.pioreactor.com/t/calibration-graphs-on-ui/640)._
