]> git.mxchange.org Git - fba.git/blob - fba/boot.py
dfe7ae4edeb612d1cb578255b30ac8cc6483dd21
[fba.git] / fba / boot.py
1 # Fedi API Block - An aggregator for fetching blocking data from fediverse nodes
2 # Copyright (C) 2023 Free Software Foundation
3 #
4 # This program is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU Affero General Public License as published
6 # by the Free Software Foundation, either version 3 of the License, or
7 # (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU Affero General Public License for more details.
13 #
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
16
17 import os
18 import sys
19 import tempfile
20 import zc.lockfile
21 from fba import fba
22
23 # Lock file
24 lockfile = tempfile.gettempdir() + '/fba.lock'
25 LOCK = None
26
27 def acquire_lock():
28     global LOCK
29     try:
30         print(f"DEBUG: Acquiring lock: '{lockfile}'")
31         LOCK = zc.lockfile.LockFile(lockfile)
32         print("DEBUG: Lock obtained.")
33
34     except zc.lockfile.LockError:
35         print(f"ERROR: Cannot aquire lock: '{lockfile}'")
36         sys.exit(100)
37
38 def shutdown():
39     print("DEBUG: Closing database connection ...")
40     fba.connection.close()
41     if LOCK != None:
42         print("DEBUG: Releasing lock ...")
43         LOCK.close()
44         print(f"DEBUG: Deleting lockfile='{lockfile}' ...")
45         os.remove(lockfile)
46     print("DEBUG: Shutdown completed.")