agronholm / apscheduler

Task scheduling library for Python
MIT License
5.98k stars 694 forks source link

SQLite3 Database Locked #843

Closed Laurel-rao closed 2 months ago

Laurel-rao commented 6 months ago

Things to check first

Version

3.5

What happened?

2024-01-09 15:11:06 - [D:\mypro\workdir\web_scheduler\schedulers\tools.py:10] - DEBUG - job debug 2 1 level:0: start DB error executing 'update_job' (database is locked). Retrying with a new DB connection... 2024-01-09 15:11:06 - [D:\mypro\workdir\web_scheduler\schedulers\tools.py:10] - DEBUG - job debug 2 1 level:0: start DB error executing 'update_job' (database is locked). Retrying with a new DB connection... self._instances == defaultdict(<function BaseExecutor.init.. at 0x000001E57D074DC0>, {'job_id_1_2': 0}) Exception in thread APScheduler: Traceback (most recent call last): File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\utils.py", line 89, in _execute return self.cursor.execute(sql, params) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\sqlite3\base.py", line 328, in execute return super().execute(query, params) sqlite3.OperationalError: database is locked

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django_apscheduler\util.py", line 98, in func_wrapper result = func(*args, **kwargs) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django_apscheduler\jobstores.py", line 258, in update_job db_job.save() File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\models\base.py", line 814, in save self.save_base( File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\models\base.py", line 877, in save_base updated = self._save_table( File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\models\base.py", line 990, in _save_table updated = self._do_update( File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\models\base.py", line 1054, in _do_update return filtered._update(values) > 0 File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\models\query.py", line 1231, in _update return query.get_compiler(self.db).execute_sql(CURSOR) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\models\sql\compiler.py", line 1984, in execute_sql cursor = super().execute_sql(result_type) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\models\sql\compiler.py", line 1562, in execute_sql cursor.execute(sql, params) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\utils.py", line 102, in execute return super().execute(sql, params) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\utils.py", line 67, in execute return self._execute_with_wrappers( File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\utils.py", line 80, in _execute_with_wrappers return executor(sql, params, many, context) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\utils.py", line 89, in _execute return self.cursor.execute(sql, params) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\utils.py", line 91, in exit raise dj_exc_value.with_traceback(traceback) from exc_value File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\utils.py", line 89, in _execute return self.cursor.execute(sql, params) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\sqlite3\base.py", line 328, in execute return super().execute(query, params) django.db.utils.OperationalError: database is locked

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\utils.py", line 89, in _execute return self.cursor.execute(sql, params) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\sqlite3\base.py", line 328, in execute return super().execute(query, params) sqlite3.OperationalError: database is locked

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "D:\environment\python3.8\lib\threading.py", line 932, in _bootstrap_inner self.run() File "D:\environment\python3.8\lib\threading.py", line 870, in run self._target(*self._args, *self._kwargs) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\apscheduler\schedulers\blocking.py", line 30, in _main_loop wait_seconds = self._process_jobs() File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\apscheduler\schedulers\base.py", line 995, in _process_jobs jobstore.update_job(job) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django_apscheduler\util.py", line 104, in func_wrapper result = func(args, **kwargs) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django_apscheduler\jobstores.py", line 258, in update_job db_job.save() File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\models\base.py", line 814, in save self.save_base( File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\models\base.py", line 877, in save_base updated = self._save_table( File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\models\base.py", line 990, in _save_table updated = self._do_update( File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\models\base.py", line 1054, in _do_update return filtered._update(values) > 0 File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\models\query.py", line 1231, in _update return query.get_compiler(self.db).execute_sql(CURSOR) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\models\sql\compiler.py", line 1984, in execute_sql cursor = super().execute_sql(result_type) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\models\sql\compiler.py", line 1562, in execute_sql cursor.execute(sql, params) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\utils.py", line 102, in execute return super().execute(sql, params) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\utils.py", line 67, in execute return self._execute_with_wrappers( File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\utils.py", line 80, in _execute_with_wrappers return executor(sql, params, many, context) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\utils.py", line 89, in _execute return self.cursor.execute(sql, params) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\utils.py", line 91, in exit raise dj_exc_value.with_traceback(traceback) from exc_value File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\utils.py", line 89, in _execute return self.cursor.execute(sql, params) File "D:\mypro\workdir\web_scheduler\venv\lib\site-packages\django\db\backends\sqlite3\base.py", line 328, in execute return super().execute(query, params) django.db.utils.OperationalError: database is locked

How can we reproduce the bug?

use mysql database will not locked,sqlite3 have this problem

agronholm commented 6 months ago

Did you not understand the question "How can we reproduce the bug"? It means: "Give us instructions for how to make the same problem occur here too". Also, always try with the latest version. You seem to be using a very old APScheduler version.

Finally, are you using multiple schedulers against the same database? The FAQ warns explicitly not to do that.

agronholm commented 2 months ago

Closing due to lack of responses and the likelihood of a user error here.