* mysql 기준
CREATE TABLE history (
item VARCHAR(255) PRIMARY KEY,
last_execution_time TIMESTAMP NOT NULL,
execution_interval INT NOT NULL,
result FLOAT
);
import mysql.connector
from datetime import datetime
import random
config = {
'user': 'root',
'password': '비번',
'host': '127.0.0.1',
'database': 'monitoring',
'raise_on_warnings': True
}
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
# 20개의 테스트 데이터 생성
for i in range(20):
item = f"item{i}"
last_execution_time = datetime.now()
execution_interval = 10
cursor.execute("INSERT INTO history (item, last_execution_time, execution_interval) VALUES (%s, %s, %s)",
(item, last_execution_time, execution_interval))
conn.commit()
import asyncio
import mysql.connector
from datetime import datetime, timedelta
import random
# 이 함수는 모니터링 항목을 실행하고 결과를 반환하는 함수를 대신합니다.
async def monitoring_task(item):
random_num = random.random()
await asyncio.sleep(random_num*3) # 실제 모니터링 작업을 수행한다고 가정.
return 100.0+random_num*10 # 모니터링 작업 결과에 대한 임의의 값.
async def main():
config = {
'user': 'root',
'password': '비번',
'host': '127.0.0.1',
'database': 'monitoring',
'raise_on_warnings': True
}
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
while True:
cursor.execute("SELECT * FROM history ORDER BY last_execution_time")
rows = cursor.fetchall()
for row in rows:
item, last_execution_time, execution_interval, _ = row
next_execution_time = last_execution_time.timestamp() + execution_interval
current_time = datetime.now().timestamp()
if next_execution_time <= current_time:
# 이 항목을 모니터링해야 합니다.
result = await monitoring_task(row)
print(f"실행아이템 {item} : {result}, 주기 : {execution_interval}")
try:
cursor.execute("UPDATE history SET last_execution_time = FROM_UNIXTIME(%s), result = %s WHERE item = %s",
(current_time, result, row[0]))
conn.commit()
except Exception as e:
print(e)
else:
# 다음 실행까지 대기
await asyncio.sleep(next_execution_time - current_time)
if __name__ == "__main__":
asyncio.run(main())
맥미니 m1 텐서플로우 설치 (0) | 2022.03.02 |
---|---|
파이썬 코드 퀴즈. (0) | 2021.12.26 |
파이참(pycharm)의 python console 실행시 에러 (0) | 2021.05.12 |
[Mac OS] 애플M1 맥미니, 파이썬 개발 가상환경 설치/설정 하기 (0) | 2021.04.21 |
댓글 영역