<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-GB link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thank you very much for clarifying it.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>As a matter of fact, it has failed. Few times I just left it to run for about half-a-day to see what happens, and it finally came back with some errors, but I cannot remember what errors specifically. Though, I think they were to do with some sort of timeout. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Cheers,</p><p class=MsoNormal>Pej.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>From: </b><a href="mailto:p.j.a.cock@googlemail.com">Peter Cock</a><br><b>Sent: </b>26 July 2017 15:24<br><b>To: </b><a href="mailto:pejvak.moghimi@york.ac.uk">Pejvak Moghimi</a><br><b>Cc: </b><a href="mailto:biopython@mailman.open-bio.org">Biopython Mailing List</a><br><b>Subject: </b>Re: [Biopython] help with ncbiWWW</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>That does help, thank you.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>First of all that tells me you are using Windows and your Python is</p><p class=MsoNormal>from Anaconda (probably not important here).</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Now, I had been guessing the code was getting stuck while actually</p><p class=MsoNormal>connecting to the NCBI and waiting an update - which is where that</p><p class=MsoNormal>socket timeout would come into play.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I see now the problem is when Biopython checks for an update,</p><p class=MsoNormal>waits for a bit, checks for an update, waits for a bit, ... and never</p><p class=MsoNormal>gives up:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>https://github.com/biopython/biopython/blob/biopython-170/Bio/Blast/NCBIWWW.py#L164</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The code increases the wait interval to 120s (two minutes), but</p><p class=MsoNormal>currently has no (optional) maximum total waiting time. Adding</p><p class=MsoNormal>this as an option seems sensible (e.g. a maximum total waiting</p><p class=MsoNormal>time of say 5 or 10 mins).</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Also, it would be good to check if the NCBI is returning some</p><p class=MsoNormal>clue or error message which our code does not understand...</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>From your initial description is sounds like you have not found</p><p class=MsoNormal>any single example which fails - so this is going to be hard to</p><p class=MsoNormal>test.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Peter</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On Wed, Jul 26, 2017 at 3:04 PM, Pejvak Moghimi</p><p class=MsoNormal><pejvak.moghimi@york.ac.uk> wrote:</p><p class=MsoNormal>> Hi Peter,</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Here it is:</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Traceback (most recent call last):</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>   File "<ipython-input-107-561cd74d2097>", line 1, in <module></p><p class=MsoNormal>>     runfile('D:/Dropbox/Pejvak</p><p class=MsoNormal>> Moghimi/DMT_project/blast_for_clav_seqs/blastScript(altered).py',</p><p class=MsoNormal>> wdir='D:/Dropbox/Pejvak Moghimi/DMT_project/blast_for_clav_seqs')</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>   File</p><p class=MsoNormal>> "C:\Users\pezhv\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py",</p><p class=MsoNormal>> line 880, in runfile</p><p class=MsoNormal>>     execfile(filename, namespace)</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>   File</p><p class=MsoNormal>> "C:\Users\pezhv\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py",</p><p class=MsoNormal>> line 102, in execfile</p><p class=MsoNormal>>     exec(compile(f.read(), filename, 'exec'), namespace)</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>   File "D:/Dropbox/Pejvak</p><p class=MsoNormal>> Moghimi/DMT_project/blast_for_clav_seqs/blastScript(altered).py", line 116,</p><p class=MsoNormal>> in <module></p><p class=MsoNormal>>     result_handle = NCBIWWW.qblast("blastp", "nr", sequence,</p><p class=MsoNormal>> hitlist_size=500, entrez_query = orgn_specified)</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>   File "C:\Users\pezhv\Anaconda3\lib\site-packages\Bio\Blast\NCBIWWW.py",</p><p class=MsoNormal>> line 164, in qblast</p><p class=MsoNormal>>     time.sleep(wait)</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Cheers,</p><p class=MsoNormal>> Pej.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> On 26 July 2017 at 14:57, Peter Cock <p.j.a.cock@googlemail.com> wrote:</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>> Hi Pej.</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>> Hmm. Maybe setting the timeout is not going to solve your</p><p class=MsoNormal>>> problem. I was hoping that would be a neat solution.</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>> Can you show us the stack trace when you had to stop a job</p><p class=MsoNormal>>> please?</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>> I assume you are using control+c to do this, in which case</p><p class=MsoNormal>>> Python ought to stop with the exception KeyboardInterrupt.</p><p class=MsoNormal>>> What I am interested in here is where in the code Python</p><p class=MsoNormal>>> is getting stuck. That would be a good clue.</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>> Peter</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>> On Wed, Jul 26, 2017 at 2:47 PM, Pejvak Moghimi</p><p class=MsoNormal>>> <pejvak.moghimi@york.ac.uk> wrote:</p><p class=MsoNormal>>> > Hi Peter,</p><p class=MsoNormal>>> ></p><p class=MsoNormal>>> > That solution, so far, does not seem to have worked nor with 10 neither</p><p class=MsoNormal>>> > with</p><p class=MsoNormal>>> > 30 second options.</p><p class=MsoNormal>>> ></p><p class=MsoNormal>>> > Cheers,</p><p class=MsoNormal>>> > Pej.</p><p class=MsoNormal>>> ></p><p class=MsoNormal>>> > On 26 July 2017 at 13:29, Peter Cock <p.j.a.cock@googlemail.com> wrote:</p><p class=MsoNormal>>> >></p><p class=MsoNormal>>> >> I am hoping that putting this near the start of your script will</p><p class=MsoNormal>>> >> apply the default timeout to all your BLAST calls (or other</p><p class=MsoNormal>>> >> network calls, e.g. NCBI Entrez):</p><p class=MsoNormal>>> >></p><p class=MsoNormal>>> >> import socket</p><p class=MsoNormal>>> >> socket.setdefaulttimeout(30)  # timeout in seconds</p><p class=MsoNormal>>> >></p><p class=MsoNormal>>> >> Peter</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>