My script is running in python docker container. I'm trying to fetch from sola[r] local API with this loop script (code is working, but only few hours):
while True:
startTime = time.time()
try:
data = get_solar_data()
except requests.exceptions.ConnectionError as e:
print("ERROR!!!", datetime.now().strftime("%d/%m/%Y %H:%M:%S"))
print(f"ERRor' {e} 'was discovered. Retrying connection in 5 seconds")
time.sellp(5)
continue
data = data["Data"]
def create_variable(name, value):
globals()[name] = value
for index, data in enumerate(data):
create_variable(f"index{index}", data)
insert_data_to_database(index0, index1, index2, index3, index4, index5, index6, index7, index8, index9, index10, index11, index12, index13, index14, index15, index16, index17, index18, index19, index20, index21, index22, index23, index24, index25, index26, index27, index28, index29, index30, index31, index32, index33, index34, index35, index36, index37, index38, index39, index40, index41, index42, index43, index44, index45, index46, index47, index48, index49, index50, index51, index52, index53, index54, index55, index56, index57, index58, index59, index60, index61, index62, index63, index64, index65, index66, index67, index68, index69, index70, index71, index72, index73, index74, index75, index76, index77, index78, index79, index80, index81, index82, index83, index84, index85, index86, index87, index88, index89, index90, index91, index92, index93, index94, index95, index96, index97, index98, index99, index100, index101, index102, index103, index104, index105, index106, index107, index108, index109, index110, index111, index112, index113, index114, index115, index116, index117, index118, index119, index120, index121, index122, index123, index124, index125, index126, index127, index128, index129, index130, index131, index132, index133, index134, index135, index136, index137, index138, index139, index140, index141, index142, index143, index144, index145, index146, index147, index148, index149, index150, index151, index152, index153, index154, index155, index156, index157, index158, index159, index160, index161, index162, index163, index164, index165, index166, index167, index168, index169, index170, index171, index172, index173, index174, index175, index176, index177, index178, index179, index180, index181, index182, index183, index184, index185, index186, index187, index188, index189, index190, index191, index192, index193, index194, index195, index196, index197, index198, index199, index200, index201, index202, index203, index204, index205, index206, index207, index208, index209, index210, index211, index212, index213, index214, index215, index216, index217, index218, index219, index220, index221, index222, index223, index224, index225, index226, index227, index228, index229, index230, index231, index232, index233, index234, index235, index236, index237, index238, index239, index240, index241, index242, index243, index244, index245, index246, index247, index248, index249, index250, index251, index252, index253, index254, index255, index256, index257, index258, index259, index260, index261, index262, index263, index264, index265, index266, index267, index268, index269, index270, index271, index272, index273, index274, index275, index276, index277, index278, index279, index280, index281, index282, index283, index284, index285, index286, index287, index288, index289, index290, index291, index292, index293, index294, index295, index296, index297, index298, index299)
endTime = time.time()
resultTime = round((endTime - startTime) * 1000) / 1000
relax = 15 - resultTime
if relax > 0:
time.sleep(relax)
else:
print("WARNING!!!", datetime.now().strftime("%d/%m/%Y %H:%M:%S"))
print("Negative sleep time", round(relax, 2))
print("Skiping sleep function")
And here is the main.py:
import signal
import time
from threading import Thread
import datetime
from config import API_IP, REGISTRATION_NUMBER, DB_USER, DB_PASSWORD
import dataMiner
# Created by Jakubsulla 2023
def shutdown(signum, frame):
print(datetime.datetime.now().strftime('%d/%m/%y %H:%M:%S'), "- Stoping docker container")
def web_app():
with open("web-app.py", "r") as file:
code = file.read()
exec(code)
if __name__ == '__main__':
print(datetime.datetime.now().strftime('%d/%m/%y %H:%M:%S'), "- Starting docker container")
signal.signal(signal.SIGTERM, shutdown)
signal.signal(signal.SIGINT, shutdown)
print("initializing core.")
time.sleep(0.75)
print("initializing core..")
time.sleep(0.75)
print("initializing core...")
time.sleep(0.75)
print("initializing core....")
time.sleep(0.75)
print("initializing core DONE")
dm = Thread(target=dataMiner.data_miner, args=[API_IP, REGISTRATION_NUMBER, DB_USER, DB_PASSWORD])
dm.start()
print(datetime.datetime.now().strftime('%d/%m/%y %H:%M:%S'), "- Started data-miner in background")
Don't worry about the web_app function, it's just a preparation for the implementation of the flask framework.
I have tried running it [self out of thread] and print some "logs", but it just stops in the middle of the night.
I hope there is an option that allows me to run the script forever.
I don't know what to do.