Subversion Repositories SmartDukaan

Rev

Rev 8020 | Rev 8065 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8020 Rev 8056
Line 13... Line 13...
13
from email.MIMEBase import MIMEBase
13
from email.MIMEBase import MIMEBase
14
from email.MIMEText import MIMEText
14
from email.MIMEText import MIMEText
15
from email import Encoders
15
from email import Encoders
16
 
16
 
17
 
17
 
18
 
-
 
19
class EmailSender(Daemon):
18
class EmailSender(Daemon):
20
    def __init__(self, logfile='/var/log/utils/emailsender/emailsender.log', pidfile='/var/run/email-sender.pid'):
19
    def __init__(self, logfile='/var/log/utils/emailsender/emailsender.log', pidfile='/var/run/email-sender.pid', count = 0):
21
        Daemon.__init__(self, pidfile, stdout=logfile, stderr=logfile)
20
        Daemon.__init__(self, pidfile, stdout=logfile, stderr=logfile)
22
        print 'EmailSender initiated at', time.time()
21
        print 'EmailSender initiated at', time.time()
23
        self.email_schedular = sched.scheduler(time.time, time.sleep)
22
        self.email_schedular = sched.scheduler(time.time, time.sleep)
24
        self.time_to_sleep = 2
23
        self.time_to_sleep = 2
-
 
24
        self.count = count
25
        self.authenticate()
25
        self.authenticate()
26
 
26
 
27
    def authenticate(self):
27
    def authenticate(self):
28
        try:
28
        try:
29
            print "Attempting authentication at ", time.time()
29
            print "Attempting authentication at ", time.time()
Line 105... Line 105...
105
#                self.mailServer = self.sendGridMailServer
105
#                self.mailServer = self.sendGridMailServer
106
#                self.password = self.sendGridPassword
106
#                self.password = self.sendGridPassword
107
#                break
107
#                break
108
 
108
 
109
    def send(self):
109
    def send(self):
-
 
110
        if self.count > 10:
-
 
111
            print str(self.count)
-
 
112
            print "Number of failed attempts is more than 10. Exiting"
-
 
113
            sys.exit()
110
        print "Despatch stared at ", time.time()
114
        print "Despatch stared at ", time.time()
111
        helper_client = HelperClient().get_client()
115
        helper_client = HelperClient().get_client()
112
        
116
        
113
        emails_to_be_dispatched = helper_client.getEmailsToBeSent()
117
        emails_to_be_dispatched = helper_client.getEmailsToBeSent()
114
        print len(emails_to_be_dispatched)
118
        print len(emails_to_be_dispatched)
Line 118... Line 122...
118
                send_result = self.sendMail(email)
122
                send_result = self.sendMail(email)
119
            except Exception as e:
123
            except Exception as e:
120
                print sys.exc_info()[0]
124
                print sys.exc_info()[0]
121
                print e
125
                print e
122
                print 'Error occurred sending emails.'
126
                print 'Error occurred sending emails.'
123
                sys.exit()
127
                self.count = self.count + 1
124
 
128
 
125
            if len(send_result) == 0:
129
            if len(send_result) == 0:
126
                print "Sent at", time.time()
130
                print "Sent at", time.time()
127
                helper_client.markEmailAsSent(email.id)
131
                helper_client.markEmailAsSent(email.id)
128
            else:
132
            else:
129
                print "Failed sending email. Id:", " Time:", time.time()
133
                print "Failed sending email. Id:", " Time:", time.time()
-
 
134
                self.count = self.count + 1
130
            
135
            
131
        self.email_schedular.enter(self.time_to_sleep, 1, self.send, ())
136
        self.email_schedular.enter(self.time_to_sleep, 1, self.send, ())
132
 
137
 
133
    def run(self):
138
    def run(self):
134
        self.email_schedular.enter(self.time_to_sleep, 1, self.send, ())
139
        self.email_schedular.enter(self.time_to_sleep, 1, self.send, ())
Line 142... Line 147...
142
                      )
147
                      )
143
    parser.add_option("-i", "--pidfile", dest="pidfile",
148
    parser.add_option("-i", "--pidfile", dest="pidfile",
144
                      type="string",
149
                      type="string",
145
                      help="Write the PID to pidfile")
150
                      help="Write the PID to pidfile")
146
    (options, args) = parser.parse_args()
151
    (options, args) = parser.parse_args()
147
    daemon = EmailSender(options.logfile, options.pidfile)
152
    daemon = EmailSender(options.logfile, options.pidfile, 0)
148
    if len(args) == 0:
153
    if len(args) == 0:
149
        daemon.run()
154
        daemon.run()
150
    elif len(args) == 1:
155
    elif len(args) == 1:
151
        if 'start' == args[0]:
156
        if 'start' == args[0]:
152
            daemon.start()
157
            daemon.start()