Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Рудакова Ольга Сергеевна
pingApp
Commits
598ef8dd
Commit
598ef8dd
authored
3 years ago
by
Рудакова Ольга Сергеевна
Browse files
Options
Download
Patches
Plain Diff
add auto clean of db
parent
db33fd52
master
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
app.py
+30
-3
app.py
config.py
+5
-0
config.py
readme.md
+4
-0
readme.md
with
39 additions
and
3 deletions
+39
-3
app.py
+
30
−
3
View file @
598ef8dd
import
atexit
import
datetime
from
datetime
import
date
import
flask
from
pythonping
import
ping
from
flask
import
Flask
,
jsonify
,
request
from
flask_migrate
import
Migrate
from
flask_sqlalchemy
import
SQLAlchemy
from
apscheduler.schedulers.background
import
BackgroundScheduler
from
sqlalchemy
import
desc
from
sqlalchemy
import
desc
,
column
from
config
import
*
app
=
Flask
(
__name__
)
app
.
config
[
'SQLALCHEMY_DATABASE_URI'
]
=
'postgresql://postgres:admin@localhost/statistic'
app
.
config
[
'SQLALCHEMY_TRACK_MODIFICATIONS'
]
=
False
app
.
config
[
'SQLALCHEMY_DATABASE_URI'
]
=
DB_URL
app
.
config
[
'SQLALCHEMY_TRACK_MODIFICATIONS'
]
=
DB_TRACK_NODIFICATION
db
=
SQLAlchemy
(
app
)
migrate
=
Migrate
(
app
,
db
)
...
...
@@ -123,6 +128,13 @@ def start_scheduler():
return
status_code
@app.route
(
'/api/v1/db/auto-clean-time'
,
methods
=
[
'POST'
])
def
update_auto_clean_db
():
scheduler
.
resume
()
status_code
=
flask
.
Response
(
status
=
200
)
return
status_code
def
ip_ping
():
for
camera
in
Camera
.
query
.
all
():
response_list
=
ping
(
camera
.
camera_ip
,
size
=
40
,
count
=
3
)
...
...
@@ -132,6 +144,14 @@ def ip_ping():
db
.
session
.
commit
()
def
auto_clean_db
():
clean_date
=
datetime
.
datetime
.
now
()
-
DB_AUTOCLEAN_INTERVAL
old_stats
=
Stat
.
query
.
filter
(
Stat
.
date
<
clean_date
).
all
()
for
old_stat
in
old_stats
:
db
.
session
.
delete
(
old_stat
)
db
.
session
.
commit
()
scheduler
=
BackgroundScheduler
()
scheduler
.
add_job
(
id
=
"scheduler"
,
func
=
ip_ping
,
trigger
=
"interval"
,
seconds
=
time
)
scheduler
.
start
()
...
...
@@ -139,6 +159,13 @@ scheduler.start()
# Shut down the scheduler when exiting the app
atexit
.
register
(
lambda
:
scheduler
.
shutdown
())
scheduler2
=
BackgroundScheduler
()
scheduler2
.
add_job
(
id
=
"dbclean"
,
func
=
auto_clean_db
,
trigger
=
"interval"
,
seconds
=
DB_AUTOCLEAN_INTERVAL
.
total_seconds
())
scheduler2
.
start
()
# Shut down the scheduler when exiting the app
atexit
.
register
(
lambda
:
scheduler2
.
shutdown
())
if
__name__
==
'__main__'
:
app
.
run
(
debug
=
True
)
...
...
This diff is collapsed.
Click to expand it.
config.py
0 → 100644
+
5
−
0
View file @
598ef8dd
import
datetime
DB_URL
=
'postgresql://postgres:admin@localhost/statistic'
DB_TRACK_NODIFICATION
=
False
DB_AUTOCLEAN_INTERVAL
=
datetime
.
timedelta
(
days
=
30
)
This diff is collapsed.
Click to expand it.
readme.md
+
4
−
0
View file @
598ef8dd
...
...
@@ -5,6 +5,10 @@
Так же можно задать интервал времени, с которым будут посылаться проверочные сигналы.
Есть возможность приостановить и возобновить отправку сигналов.
Записи старше заданного значения из талицы статистики в базе днных удаляются (по умолчанию это значение равно 30 дням).
Чтобы поменять это значение надо в файле конфигурации config.py поменять значение DB_AUTOCLEAN_INTERVAL и перезапустить
приложение.
## Запуск
1.
Для успешного старта приложения надо иметь запущенный постгрес с созданной в нем базой данных по имени statistic
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets