LogicJake/WebMonitor

database is locked

Opened this issue · 3 comments

imhut commented

OperationalError at /task/task/import/
database is locked
Request Method: POST
Request URL: http://***********/task/task/import/
Django Version: 2.2.13
Exception Type: OperationalError
Exception Value:
database is locked
Exception Location: /usr/local/python3/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py in execute, line 384
Python Executable: /usr/local/bin/python3
Python Version: 3.7.0
Python Path:
['/opt/WebMonitor',
'/usr/local/python3/lib/python37.zip',
'/usr/local/python3/lib/python3.7',
'/usr/local/python3/lib/python3.7/lib-dynload',
'/usr/local/python3/lib/python3.7/site-packages',
'/usr/local/python3/lib/python3.7/site-packages/odf',
'/usr/local/python3/lib/python3.7/site-packages/odf',
'/usr/local/python3/lib/python3.7/site-packages/odf',
'/usr/local/python3/lib/python3.7/site-packages/odf',
'/usr/local/python3/lib/python3.7/site-packages/odf',
'/usr/local/python3/lib/python3.7/site-packages/odf',
'/usr/local/python3/lib/python3.7/site-packages/odf']
Server time: 星期五, 21 五月 2021 19:47:54 +0800

经常锁死。。。。导入点数据就锁死了,哈哈。。。

imhut commented

File "/usr/local/python3/lib/python3.7/concurrent/futures/thread.py", line 151, in submit
raise RuntimeError('cannot schedule new futures after shutdown')
RuntimeError: cannot schedule new futures after shutdown
Error submitting job "monitor (trigger: interval[0:05:00], next run at: 2021-05-21 21:46:07 CST)" to executor "default"
Traceback (most recent call last):
File "/usr/local/python3/lib/python3.7/site-packages/apscheduler/schedulers/base.py", line 979, in _process_jobs
executor.submit_job(job, run_times)
File "/usr/local/python3/lib/python3.7/site-packages/apscheduler/executors/base.py", line 71, in submit_job
self._do_submit_job(job, run_times)
File "/usr/local/python3/lib/python3.7/site-packages/apscheduler/executors/pool.py", line 28, in _do_submit_job
f = self._pool.submit(run_job, job, job._jobstore_alias, run_times, self._logger.name)
File "/usr/local/python3/lib/python3.7/concurrent/futures/thread.py", line 151, in submit
raise RuntimeError('cannot schedule new futures after shutdown')
RuntimeError: cannot schedule new futures after shutdown
Error submitting job "monitor (trigger: interval[0:05:00], next run at: 2021-05-21 21:46:07 CST)" to executor "default"
Traceback (most recent call last):
File "/usr/local/python3/lib/python3.7/site-packages/apscheduler/schedulers/base.py", line 979, in _process_jobs
executor.submit_job(job, run_times)
File "/usr/local/python3/lib/python3.7/site-packages/apscheduler/executors/base.py", line 71, in submit_job
self._do_submit_job(job, run_times)
File "/usr/local/python3/lib/python3.7/site-packages/apscheduler/executors/pool.py", line 28, in _do_submit_job
f = self._pool.submit(run_job, job, job._jobstore_alias, run_times, self._logger.name)
File "/usr/local/python3/lib/python3.7/concurrent/futures/thread.py", line 151, in submit
raise RuntimeError('cannot schedule new futures after shutdown')
RuntimeError: cannot schedule new futures after shutdown

imhut commented

WAL的优点与缺点
      优点:
      1.读和写可以完全地并发执行,不会互相阻塞(但是写之间仍然不能并发)。
      2.WAL在大多数情况下,拥有更好的性能(因为无需每次写入时都要写两个文件)。
      3.磁盘I/O行为更容易被预测。
      缺点:
      1.访问数据库的所有程序必须在同一主机上,且支持共享内存技术。
      2.每个数据库现在对应3个文件:.db,-wal,-shm。
      3.当写入数据达到GB级的时候,数据库性能将下降。
      4.3.7.0之前的SQLite无法识别启用了WAL机制的数据库文件。

https://blog.csdn.net/dyllove98/article/details/8841973

引入-wal机制搞定。。。。。

@imhut 非常有用的信息