исправил баг с подавителем на бесконечные процессы sending_data

main_2
Sergey Revyakin 1 month ago
parent ae6ca7e210
commit 1bd2b5207e

@ -18,8 +18,12 @@ services:
volumes:
- ../../.env:/app/.env:ro
- ../../runtime:/app/runtime
- ../../src:/app/src
- ../../common:/app/common
networks:
- dronedetector-net
extra_hosts:
- "host.docker.internal:host-gateway"
dronedetector-nn-server:
container_name: dronedetector-nn-server

@ -73,7 +73,6 @@ send_to_jammer_flag = as_bool(os.getenv('send_to_jammer_flag', '0'))
latitude = float(os.getenv('latitude'))
longitude = float(os.getenv('longitude'))
i = 0
flag = 0
max_len_bulk = 1
bulk_data = []
@ -98,6 +97,32 @@ freqs_alarm = {freq: 0 for freq in freqs}
# 4. Добавить print, только если deub_module_flag.
def ensure_sending_data_task():
global sending_data_task
if sending_data_task is None or sending_data_task.done():
sending_data_task = asyncio.create_task(sending_data())
async def stop_sending_data_task():
global sending_data_task
if sending_data_task is None:
return
task = sending_data_task
sending_data_task = None
if task.done():
return
task.cancel()
try:
await task
except asyncio.CancelledError:
pass
############################################################################
# GPS MODULE - INACTIVE
############################################################################
@ -299,13 +324,10 @@ async def sending_data():
от текущего статуса тревоги (аларм/не аларм).
"""
global i
global alarm
global jammer_event
if i == 0:
while True:
i=1
print('while true!')
ModuleDataSingleV2 = await agregate_data(deepcopy(data_queue))
if send_to_master_flag:
@ -315,8 +337,8 @@ async def sending_data():
# Если перед отправкой на мастер все было чисто, то ждем 60 сек.
# Если во время этих 60 сек. пришел пакет с алармом, то рассматриваем ситуации:
if not alarm:
for i in range(passive_interval_to_send, 0, -1):
print('ТАЙМЕР ', i)
for countdown in range(passive_interval_to_send, 0, -1):
print('ТАЙМЕР ', countdown)
await asyncio.sleep(1)
if alarm:
break
@ -336,7 +358,6 @@ async def sending_data():
# В случае аларма ждем секунду перед новой отправкой данных.
if alarm:
await asyncio.sleep(active_interval_to_send)
i = 0
@app.post('/waterfall')
@ -410,10 +431,8 @@ async def jammer_active():
global jammer_event
global freqs_alarm
global sending_data_task
if sending_data_task is not None:
sending_data_task.cancel()
await stop_sending_data_task()
freqs_alarm = {freq: 0 for freq in freqs}
jammer_event = True
@ -437,11 +456,10 @@ async def jammer_deactive():
global jammer_event
global alarm
global sending_data_task
alarm = False
jammer_event = False
set_jammer_active(False)
sending_data_task = asyncio.create_task(sending_data())
ensure_sending_data_task()
print('ОТКЛЮАЕМ ПОДАВИТЕЛЬ ААААААААААААААААААААААААААААААААААААААААААААААААА!!!!')
print('-' * 20)
@ -493,9 +511,9 @@ async def jam_server():
if data_from_jam_server['type'] == 'run':
alarm_status = (data_from_jam_server['data'])['state']
print(alarm_status)
if alarm_status:
if alarm_status and not jammer_event:
await jammer_active()
else:
elif not alarm_status and jammer_event:
await jammer_deactive()
except Exception as e:
jam_server_connect = None
@ -511,10 +529,9 @@ async def startup_event():
Запускаем параллельно задачи jam_server и sending_data.
"""
global sending_data_task
set_jammer_active(False)
asyncio.create_task(jam_server())
sending_data_task = asyncio.create_task(sending_data())
ensure_sending_data_task()
if __name__ == '__main__':

Loading…
Cancel
Save