Compare commits

..

No commits in common. "bab3decd2c126d6f4b6922c3a5f89542fbb11be6" and "2540e1536a9e30898f782258347fa3217cfeb924" have entirely different histories.

View File

@ -8,29 +8,44 @@ import mail
import os import os
import psutil import psutil
import report import report
import signal
import time import time
CYCLE_TIME = 60 LOCK_FILE = os.path.join(config.TARGET_FOLDER, "lock")
SLEEP_TIME = .5 PID = os.getpid()
logger = logging.getLogger('root') logger = logging.getLogger('root')
report.stdoutLoggingConfigure(log_name_lvl=[('root', config.LOG_LEVEL), ]) report.stdoutLoggingConfigure(log_name_lvl=[('root', config.LOG_LEVEL), ])
class GracefulKiller: def has_handle(fpath):
kill_now = False for proc in psutil.process_iter():
def __init__(self): try:
signal.signal(signal.SIGINT, self.exit_gracefully) for item in proc.open_files():
signal.signal(signal.SIGTERM, self.exit_gracefully) if fpath == item.path:
return True
except Exception:
pass
def exit_gracefully(self, signum, frame): return False
self.kill_now = True
def file2mail(): if __name__ == "__main__":
while True:
# Check if LOCK_FILE EXISTS
if not os.path.exists(LOCK_FILE):
# Create LOCK_FILE
with open(LOCK_FILE, 'w') as fh:
fh.write(str(PID))
logger.debug("Creating lock-file %s with PID %d", LOCK_FILE, PID)
# Read LOCK_FILE content
with open(LOCK_FILE, 'r') as fh:
lf_pid = json.loads(fh.read())
# Check if LOCK_FILE has my PID
if lf_pid == PID:
# Scan for files to send # Scan for files to send
for filename in fstools.filelist(config.TARGET_FOLDER): for filename in fstools.filelist(config.TARGET_FOLDER):
# Exclude LOCK_FILE
if filename != LOCK_FILE and not has_handle(filename):
logger.info("Found %s to send via E-Mail to %s.", filename, config.SEND_TO) logger.info("Found %s to send via E-Mail to %s.", filename, config.SEND_TO)
# Send File as E-Mail # Send File as E-Mail
try: try:
@ -50,15 +65,11 @@ def file2mail():
# Remove file # Remove file
logger.debug("Removing file %s", filename) logger.debug("Removing file %s", filename)
os.remove(filename) os.remove(filename)
# Remove LOCK_FILE
logger.debug("Removing lock-file %s", LOCK_FILE)
if __name__ == '__main__': os.remove(LOCK_FILE)
killer = GracefulKiller()
i = 0
while not killer.kill_now:
time.sleep(.5)
if i >= CYCLE_TIME / SLEEP_TIME:
file2mail()
i = 0
else: else:
i += 1 logger.warning("LOCK_FILE has PID %d and this proces %d. No action!", lf_pid, PID)
else:
logger.warning("LOCK_FILE %s already exists. No action!", LOCK_FILE)
time.sleep(60)