Commit 8227d9c7 authored by mitshel's avatar mitshel
Browse files

В модуле sopdsd.py при запусках блока сканированиякниг не обнулялись данные по...

В модуле sopdsd.py при запусках блока сканированиякниг не обнулялись данные по статистическим данным. Исправлено.
parent f65b706b
Loading
Loading
Loading
Loading
+78 −0
Original line number Diff line number Diff line
@@ -147,3 +147,81 @@ mysql.connector.errors.DatabaseError: 1205 (HY000): Lock wait timeout exceeded;
2014-04-20 23:21:39,495 INFO     sopdsDaemon starting...
2014-04-20 23:21:39,545 INFO     sopdsDaemon entering in main loop...
2014-04-20 23:21:39,545 INFO      ***** Starting sopds-scan...
2014-04-20 23:28:48,768 INFO     sopdsDaemon __init__()...
2014-04-20 23:28:48,769 INFO     sopdsDaemon stop()...
2014-04-20 23:29:08,057 INFO     sopdsDaemon __init__()...
2014-04-20 23:29:08,058 INFO     sopdsDaemon start()...
2014-04-20 23:29:08,122 INFO     sopdsDaemon entering in main loop...
2014-04-20 23:29:08,123 INFO      ***** Starting sopds-scan...
2014-04-20 23:42:40,180 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-000024-030559.zip book file = 25453.fb2
2014-04-20 23:42:41,956 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-000024-030559.zip book file = 25608.fb2
2014-04-21 00:47:58,326 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-074392-091839.zip book file = 91582.fb2
2014-04-21 01:12:10,713 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-365000-370999.zip book file = 366784.fb2
2014-04-21 01:49:00,572 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-182285-187147.zip book file = 185993.fb2
2014-04-21 02:03:50,470 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120844.fb2
2014-04-21 02:03:51,091 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120845.fb2
2014-04-21 02:03:51,995 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120867.fb2
2014-04-21 02:03:52,292 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120869.fb2
2014-04-21 02:03:53,231 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 120882.fb2
2014-04-21 02:03:57,218 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 121005.fb2
2014-04-21 02:04:37,037 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 122485.fb2
2014-04-21 02:05:14,522 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 124269.fb2
2014-04-21 02:05:46,782 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 126076.fb2
2014-04-21 02:05:52,301 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 126390.fb2
2014-04-21 02:05:56,028 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 126570.fb2
2014-04-21 02:05:57,324 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 126620.fb2
2014-04-21 02:06:05,150 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129300.fb2
2014-04-21 02:06:05,204 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129304.fb2
2014-04-21 02:06:05,266 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129305.fb2
2014-04-21 02:06:09,021 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129556.fb2
2014-04-21 02:06:13,436 ERROR    Error processing ZIP file = /mnt/SATA1TB-2/КНИГИ/BOOKS/Художественная литература/LIB.RUS.EC/fb2-119691-132107.zip book file = 129813.fb2
2014-04-21 02:22:12,199 INFO     Books added      : 288522
2014-04-21 02:22:12,199 INFO     Books skipped    : 0
2014-04-21 02:22:12,200 INFO     Books DB entries deleted : 0
2014-04-21 02:22:12,200 INFO     Books in archives: 282953
2014-04-21 02:22:12,200 INFO     Archives scanned : 162
2014-04-21 02:22:12,200 INFO     Archives skipped : 0
2014-04-21 02:22:12,201 INFO     Bad archives     : 0
2014-04-21 02:22:12,201 INFO     Time estimated:2 hours, 53 minutes, 4 seconds.
2014-04-21 04:00:17,635 INFO      ***** Starting sopds-scan...
2014-04-21 04:03:58,687 INFO     Books added      : 288522
2014-04-21 04:03:58,722 INFO     Books skipped    : 5569
2014-04-21 04:03:58,723 INFO     Books DB entries deleted : 0
2014-04-21 04:03:58,723 INFO     Books in archives: 282953
2014-04-21 04:03:58,723 INFO     Archives scanned : 197
2014-04-21 04:03:58,723 INFO     Archives skipped : 127
2014-04-21 04:03:58,724 INFO     Bad archives     : 0
2014-04-21 04:03:58,724 INFO     Time estimated:4 hours, 34 minutes, 50 seconds.
2014-04-21 08:00:11,529 INFO      ***** Starting sopds-scan...
2014-04-21 08:03:16,654 INFO     Books added      : 288522
2014-04-21 08:03:16,655 INFO     Books skipped    : 11138
2014-04-21 08:03:16,655 INFO     Books DB entries deleted : 0
2014-04-21 08:03:16,655 INFO     Books in archives: 282953
2014-04-21 08:03:16,655 INFO     Archives scanned : 232
2014-04-21 08:03:16,655 INFO     Archives skipped : 254
2014-04-21 08:03:16,656 INFO     Bad archives     : 0
2014-04-21 08:03:16,656 INFO     Time estimated:8 hours, 34 minutes, 8 seconds.
2014-04-21 08:19:14,396 INFO     sopdsDaemon __init__()...
2014-04-21 08:19:14,397 INFO     sopdsDaemon restart()...
2014-04-21 08:19:14,397 INFO     sopdsDaemon stop()...
2014-04-21 08:19:16,400 INFO     sopdsDaemon start()...
2014-04-21 08:19:16,452 INFO     sopdsDaemon entering in main loop...
Traceback (most recent call last):
  File "./sopdsd.py", line 224, in <module>
    daemon.restart()
  File "./sopdsd.py", line 195, in restart
    Daemon.restart(self)
  File "./sopdsd.py", line 151, in restart
    self.start()
  File "./sopdsd.py", line 179, in start
    Daemon.start(self)
  File "./sopdsd.py", line 91, in start
    self.run()
  File "./sopdsd.py", line 205, in run
    self.scanner.init_statas()
AttributeError: 'opdsScanner' object has no attribute 'init_statas'
2014-04-21 08:19:16,456 INFO     sopdsDaemon delpid()...
2014-04-21 08:20:50,251 INFO     sopdsDaemon __init__()...
2014-04-21 08:20:50,252 INFO     sopdsDaemon start()...
2014-04-21 08:20:50,300 INFO     sopdsDaemon entering in main loop...
2014-04-21 08:20:50,301 INFO      ***** Starting sopds-scan...
+1 −0
Original line number Diff line number Diff line
@@ -202,6 +202,7 @@ class opdsDaemon(Daemon):
        while True:
            t=time.localtime()
            if (((self.cfg.DAY_OF_WEEK==0) or (self.cfg.DAY_OF_WEEK==t.tm_wday+1)) and (t.tm_hour*60+t.tm_min in self.cfg.SCAN_TIMES)) or (self.cfg.SCAN_ON_START and not self.start_scan):
                  self.scanner.init_stats()
                  self.scanner.log_options()
                  self.scanner.scan_all()
                  self.scanner.log_stats()

py/sopdsd1.py

deleted100755 → 0
+0 −143
Original line number Diff line number Diff line
#!/usr/bin/env python3
#http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/

import sys, os, time, atexit
from signal import SIGTERM
from sopdsscanner import opdsScanner

class Daemon:
    """
A generic daemon class.

Usage: subclass the Daemon class and override the run() method
"""
    def __init__(self, pidfile, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):
        self.stdin = stdin
        self.stdout = stdout
        self.stderr = stderr
        self.pidfile = pidfile

    def daemonize(self):
        """
do the UNIX double-fork magic, see Stevens' "Advanced
Programming in the UNIX Environment" for details (ISBN 0201563177)
http://www.erlenstar.demon.co.uk/unix/faq_2.html#SEC16
"""
        try:
            pid = os.fork()
            if pid > 0:
                # exit first parent
                sys.exit(0)
        except Exception as e:
            sys.stderr.write("fork #1 failed: %d (%s)\n" % (e.errno, e.strerror))
            sys.exit(1)

        # decouple from parent environment
        os.chdir("/")
        os.setsid()
        os.umask(0)

        # do second fork
        try:
            pid = os.fork()
            if pid > 0:
                # exit from second parent
                sys.exit(0)
        except Exception as e:
            sys.stderr.write("fork #2 failed: %d (%s)\n" % (e.errno, e.strerror))
            sys.exit(1)

        # redirect standard file descriptors
        sys.stdout.flush()
        sys.stderr.flush()
        si = open(self.stdin, 'r')
        so = open(self.stdout, 'a+')
        se = open(self.stderr, 'a+')
        os.dup2(si.fileno(), sys.stdin.fileno())
        os.dup2(so.fileno(), sys.stdout.fileno())
        os.dup2(se.fileno(), sys.stderr.fileno())

        # write pidfile
        atexit.register(self.delpid)
        pid = str(os.getpid())
        file(self.pidfile,'w+').write("%s\n" % pid)

    def delpid(self):
        os.remove(self.pidfile)

    def start(self):
        """
Start the daemon
"""
        # Check for a pidfile to see if the daemon already runs
        try:
            pf = open(self.pidfile,'r')
            pid = int(pf.read().strip())
            pf.close()
        except IOError:
            pid = None

        if pid:
            message = "pidfile %s already exist. Daemon already running?\n"
            sys.stderr.write(message % self.pidfile)
            sys.exit(1)

        # Start the daemon
        self.daemonize()
        self.run()

    def stop(self):
        """
Stop the daemon
"""
        # Get the pid from the pidfile
        try:
            pf = file(self.pidfile,'r')
            pid = int(pf.read().strip())
            pf.close()
        except IOError:
            pid = None

        if not pid:
            message = "pidfile %s does not exist. Daemon not running?\n"
            sys.stderr.write(message % self.pidfile)
            return # not an error in a restart

        # Try killing the daemon process
        try:
            while 1:
                os.kill(pid, SIGTERM)
                time.sleep(0.1)
        except Exception as err:
            #FIX for Ru_ru locale
            # Anton Fischer <a.fschr@gmail.com>
            #err = str(err)
            #if err.find("No such process") > 0:
                if os.path.exists(self.pidfile):
                    os.remove(self.pidfile)
            #else:
            # print str(err)
            # sys.exit(1)

    def restart(self):
        """
Restart the daemon
"""
        self.stop()
        self.start()

    def run(self):
        """
You should override this method when you subclass Daemon. It will be called after the process has been
daemonized by start() or restart().
"""

scanner=opdsScanner()
scanner.log_options()
scanner.scan_all()
scanner.log_stats()


print('Start daemon...')
d=Daemon('/var/run/sopds.pid')
d.start()