errno 111 time to time.

60 views
Skip to first unread message

bussiere adrien

unread,
Aug 26, 2012, 9:35:10 PM8/26/12
to couch...@googlegroups.com
I have time to time the errno 111 here is my snippet :
and i don't understand why :
import email, getpass, imaplib, os
import datetime
from couchdbkit import *
import unicodedata
from couchdbkit.designer import push
import time

class Email(Document):
      Sender = StringProperty()
      Recepteur = StringProperty()
      Content = StringProperty()
      GmailId = IntegerProperty()
      Date = DateTimeProperty()




 # server object
server = Server()

 # create database
db = server.get_or_create_db('email')
#push('', db)
 # associate Greeting to the db
Email.set_db(db)

exist = True


detach_dir = '' # directory where to save attachments (default: current)
#put your username here
user = "titi"
#put your password here
pwd = "toto"

# connecting to the gmail imap server
m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login(user,pwd)
m.select("[Gmail]/All Mail") # here you a can choose a mail box like INBOX instead
# use m.list() to get all the mailboxes

resp, items = m.search(None, "ALL") # you could filter using the IMAP rules here (check http://www.example-code.com/csharp/imap-search-critera.asp)
items = items[0].split() # getting the mails id
i = 0
record = False
sleep = 30
for emailid in items:


    i += 1
    emailcouch = Email()

    if i > 20640:
        resp, data = m.fetch(emailid, "(RFC822)") # fetching the mail, "`(RFC822)`" means "get the whole stuff", but you can ask for headers only, etc
        email_body = data[0][1] # getting the mail content
        mail = email.message_from_string(email_body) # parsing the mail content to get a mail object

        print i
        try :
            print "["+mail["From"]+"] :" + mail["Subject"]

        except :
            try :
                print "["+mail["From"]+"] :"
            except :
                pass
        # fp = open("%d.txt"%(i), 'wb')
        # fp.write(mail.__str__())
        # fp.close()
        #Check if any attachments at all
        content =  unicode(mail.__str__(),errors='ignore')
        if (exist):
            # emailcouchs = Email.view('email/all')
            # print emailcouchs
            # print emailcouchs.count()
            exist = False
            # for em in emailcouchs.all() :
            #     if em.content == content :
            #         exist = True


        else :
            emailcouch.Content = content
            emailcouch.GmailId = i
            connection = False

            while (connection == False):
                try :
                    emailcouch.save()
                    connection = True
                    sleep = 30
                except Exception as e:
                    print e
                    sleep = sleep * 2
                    if sleep > 120 :
                        mypass = 'toto'
                        sudo_command = '/etc/init.d/couchdb restart'
                        p = os.system('echo %s|sudo -S %s' % (mypass, sudo_command))
                    time.sleep(sleep)

            if mail.get_content_maintype() != 'multipart':
                continue

           
            # we use walk to creatone a generator so we can iterate on the parts and forget about the recursive headach
            j = 0
            for part in mail.walk():
                # multipart are just containers, so we skip them
                if part.get_content_maintype() == 'multipart':
                    continue

                # is this part an attachment ?
                if part.get('Content-Disposition') is None:
                    continue

                filename = part.get_filename()
                counter = 1

                # if there is no filename, we create one with a counter to avoid duplicates
                if not filename:
                    filename = 'part-%03d%s' % (counter, '.bin')
                    counter += 1

                att_path = os.path.join(detach_dir, filename)

                #Check if its already there
                att_path = att_path.replace("?","")
                att_path = att_path.replace("=","")
                att_path = att_path.replace(" ","")
                att_path = att_path.replace(".\\\\","")
                att_path = att_path.replace("\\","")
                att_path = att_path.replace("/","")
                att_path = att_path.replace("bin",".bin")
               
                #att_path = ".\\\\"+att_path
                try :
                    # if not os.path.isfile(att_path) :
                        # finally write the stuff
                    filee = "__%d_%d__"%(i,j)
                    emailcouch.put_attachment(part.get_payload(decode=True),att_path+filee+att_path[3:])
                    connection = False
                    while (connection == False):
                        try :
                            emailcouch.save()
                            connection = True
                            sleep = 30
                        except Exception as e:
                            print e
                            sleep = sleep * 2
                            if sleep > 120 :
                                mypass = 'rpgjdr'
                                sudo_command = '/etc/init.d/couchdb restart'
                                p = os.system('echo %s|sudo -S %s' % (mypass, sudo_command))
                            time.sleep(sleep)
                        #filee = filee.replace("bin","\.bin")
                        # fp = open("%s"%(att_path+filee+att_path[3:]), 'wb')
                        # fp.write(part.get_payload(decode=True))
                        # fp.close()
                    # if os.path.isfile(att_path):
                    #     j += 1
                    #     filee = "__%d_%d__"%(i,j)
                    #     fp = open("%s"%(att_path+filee+att_path[3:]), 'wb')
                    #     fp.write(part.get_payload(decode=True))
                    #     fp.close()
                except :
                    pass

Benoit Chesneau

unread,
Aug 27, 2012, 5:02:51 AM8/27/12
to couch...@googlegroups.com
How frequent it is? Do you have lot of connections at this time? Errno 111 means that the connection is refused. Probably because couchdb crashed and can't accept more connections. Do you have any logs in couchdb?

- benoît
--
You received this message because you are subscribed to the Google Groups "couchdbkit" group.
To view this discussion on the web visit https://groups.google.com/d/msg/couchdbkit/-/4rhHh7Yw0scJ.
To post to this group, send email to couch...@googlegroups.com.
To unsubscribe from this group, send email to couchdbkit+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/couchdbkit?hl=en.

bussiere adrien

unread,
Aug 27, 2012, 7:44:06 PM8/27/12
to couch...@googlegroups.com, ben...@e-engura.org
no i'am the lony one to make connection.

And i'am a single user on my computer.

I will look forward to it.

Bussiere
Message has been deleted

Benoit Chesneau

unread,
Aug 28, 2012, 4:29:26 AM8/28/12
to couch...@googlegroups.com
where so you see such errors ? in restkit or couchdb?

On Tue, Aug 28, 2012 at 2:21 AM, bussiere adrien <buss...@gmail.com> wrote:
> Visibly the address is in use :
> eaddrinuse
>
> There is probably some problem with the socket and it's not closed properly
> with large file ...
>
> Reards
> Bussiere
> https://groups.google.com/d/msg/couchdbkit/-/wd4h6qaxJNQJ.
Reply all
Reply to author
Forward
0 new messages