mirror of
https://github.com/mewtek/i2ME-Legacy.git
synced 2025-05-11 00:57:31 -05:00
Make each record update its own task
This commit is contained in:
parent
9cc4633e8f
commit
38dc9c005c
22
RecordTasks.py
Normal file
22
RecordTasks.py
Normal file
@ -0,0 +1,22 @@
|
||||
import asyncio
|
||||
from recordGenerators import CurrentObservations,HourlyForecast,DailyForecast
|
||||
|
||||
|
||||
""" This houses the tasks needed to update the data records concurrently
|
||||
I have no idea if this is a messy way to do things, but it will be worked upon if it is.
|
||||
"""
|
||||
|
||||
async def coTask():
|
||||
while True:
|
||||
await CurrentObservations.makeDataFile()
|
||||
asyncio.sleep(5 * 60)
|
||||
|
||||
async def hfTask():
|
||||
while True:
|
||||
await HourlyForecast.makeDataFile()
|
||||
asyncio.sleep(60 * 60)
|
||||
|
||||
async def dfTask():
|
||||
while True:
|
||||
await DailyForecast.makeDataFile()
|
||||
asyncio.sleep(60 * 60)
|
65
main.py
65
main.py
@ -2,10 +2,10 @@ import asyncio
|
||||
from asyncio.log import logger
|
||||
from asyncore import loop
|
||||
import logging,coloredlogs
|
||||
from recordGenerators import Alerts,CurrentObservations,DailyForecast,HourlyForecast,AirportDelays,AirQuality,HeatingAndCooling,PollenForecast,Breathing, AchesAndPains, MosquitoActivity, WateringNeeds, TideForecast
|
||||
from radar import TWCRadarCollector
|
||||
import os
|
||||
from datetime import datetime
|
||||
import RecordTasks
|
||||
|
||||
l = logging.getLogger(__name__)
|
||||
coloredlogs.install(logger=l)
|
||||
@ -36,58 +36,15 @@ Alerts: 5 minutes
|
||||
l.info("Starting i2RecordCollector")
|
||||
l.info("Developed by mewtek32, Floppaa, Goldblaze, and needlenose")
|
||||
|
||||
async def grabAlertsLoop():
|
||||
while True:
|
||||
await Alerts.makeRecord()
|
||||
await asyncio.sleep(60)
|
||||
async def main():
|
||||
coTask = asyncio.create_task(RecordTasks.coTask())
|
||||
hfTask = asyncio.create_task(RecordTasks.hfTask())
|
||||
dfTask = asyncio.create_task(RecordTasks.dfTask())
|
||||
|
||||
async def FiveMinUpdaters():
|
||||
while True:
|
||||
await CurrentObservations.makeDataFile()
|
||||
l.debug("Sleeping for 5 minutes...")
|
||||
await asyncio.sleep(5 * 60)
|
||||
# In theory, these should all run concurrently without problems
|
||||
await coTask
|
||||
await hfTask
|
||||
await dfTask
|
||||
|
||||
async def HourUpdaters():
|
||||
while True:
|
||||
await DailyForecast.makeDataFile()
|
||||
await HourlyForecast.makeDataFile()
|
||||
# AirQuality.writeData()
|
||||
# PollenForecast.makeDataFile()
|
||||
# AirportDelays.writeData()
|
||||
# Breathing.makeDataFile()
|
||||
# HeatingAndCooling.makeRecord()
|
||||
# WateringNeeds.makeRecord()
|
||||
# MosquitoActivity.makeRecord()
|
||||
# AchesAndPains.makeRecord()
|
||||
# TideForecast.makeRecord()
|
||||
l.debug("Sleeping for an hour...")
|
||||
await asyncio.sleep(60 * 60)
|
||||
|
||||
async def radarCollector():
|
||||
mosaicUpdateIntervals = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]
|
||||
satradUpdateIntervals = [0, 10, 20, 30, 40, 50]
|
||||
|
||||
while True:
|
||||
# Server takes ~15 - 35 seconds on average to fully generate a frame, use 40 seconds
|
||||
# to make sure the radar frame is fully good to go
|
||||
if datetime.now().minute in mosaicUpdateIntervals and datetime.now().second == 40:
|
||||
await TWCRadarCollector.collect("radarmosaic")
|
||||
|
||||
if datetime.now().minute in satradUpdateIntervals and datetime.now().second == 45:
|
||||
await TWCRadarCollector.collect("satrad")
|
||||
|
||||
await asyncio.sleep(1)
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
alertTask = loop.create_task(grabAlertsLoop())
|
||||
CCtask = loop.create_task(FiveMinUpdaters())
|
||||
ForecastsTask = loop.create_task(HourUpdaters())
|
||||
|
||||
if useRadarServer: radarTask = loop.create_task(radarCollector())
|
||||
|
||||
try:
|
||||
loop.run_until_complete(alertTask)
|
||||
loop.run_until_complete(CCtask)
|
||||
loop.run_until_complete(ForecastsTask)
|
||||
if useRadarServer: loop.run_until_complete(radarTask)
|
||||
except asyncio.CancelledError: pass
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
Loading…
x
Reference in New Issue
Block a user