2015-11-02 89 views
0

我有一個python腳本設置爲發送附件到我們的JIRA服務器。我注意到它似乎在所有壓縮文件上失敗。有誰之前經歷過這個嗎?下面是它總是返回的錯誤。它遇到的任何其他文件都發送得很好。JIRA Python無法發送Zip文件

Traceback (most recent call last): 
    File "C:\opt\python\Python35\lib\site-packages\requests\adapters.py", line 370, in send 
    timeout=timeout 
    File "C:\opt\python\Python35\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 609, in urlopen 
    _stacktrace=sys.exc_info()[2]) 
    File "C:\opt\python\Python35\lib\site-packages\requests\packages\urllib3\util\retry.py", line 245, in increment 
    raise six.reraise(type(error), error, _stacktrace) 
    File "C:\opt\python\Python35\lib\site-packages\requests\packages\urllib3\packages\six.py", line 309, in reraise 
    raise value.with_traceback(tb) 
    File "C:\opt\python\Python35\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 559, in urlopen 
    body=body, headers=headers) 
    File "C:\opt\python\Python35\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 353, in _make_request 
    conn.request(method, url, **httplib_request_kw) 
    File "C:\opt\python\Python35\lib\http\client.py", line 1083, in request 
    self._send_request(method, url, body, headers) 
    File "C:\opt\python\Python35\lib\http\client.py", line 1128, in _send_request 
    self.endheaders(body) 
    File "C:\opt\python\Python35\lib\http\client.py", line 1079, in endheaders 
    self._send_output(message_body) 
    File "C:\opt\python\Python35\lib\http\client.py", line 913, in _send_output 
    self.send(message_body) 
    File "C:\opt\python\Python35\lib\http\client.py", line 882, in send 
    self.sock.sendall(datablock) 
requests.packages.urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None)) 

編輯 - 這裏是代碼,每個請求。只要不嘗試發送zip文件,代碼就可以正常工作。我也注意到,即使我嘗試通過cURL發送zip附件,它也會失敗。所以,我不相信這是代碼的問題......?

from jira import JIRA 
import os 
import datetime as dt 
import random 
import time 
import glob 

jira=JIRA(basic_auth=('user','password'),options={'server':'http://jira.server.com'}) 
now=dt.datetime.now() 
ago=now-dt.timedelta(minutes=120) 

for root,dirs,files in os.walk('c:\\opt\\attachments\\'): 
    for fname in files: 
    found=0; 
    randomNum=str(random.randrange(0,101,2)) 
    path=os.path.join(root,fname) 
    st=os.stat(path) 
    mtime=dt.datetime.fromtimestamp(st.st_ctime) 
    if mtime>ago: 
     for afile in glob.iglob("c:\\opt\\attachments\\processed\\*"+fname): 
     print("found file: "+afile); 
     found=1; 

     if found==0: 
     print('%s modified %s'%(path,mtime)) 
     fileParts=fname.split("_") 
     fileName=fileParts[1] 
     jiraID=fileParts[0] 
     try: 
      jira.add_attachment(jiraID,path,fname) 
     except: 
      time.sleep(2) 
      os.rename(path,"c:\\opt\\attachments\\FAILED\\"+randomNum+"_"+fname) 
      time.sleep(2) 
      continue 
     time.sleep(2) 
     os.rename(path,"c:\\opt\\attachments\\processed\\"+randomNum+"_"+fname) 
     time.sleep(2) 
     else: 
     time.sleep(2) 
     os.rename(path,"c:\\opt\\attachments\\ignored\\exists_"+randomNum+"_"+fname) 
    else: 
     print('ignore: %s modified %s'%(path,mtime)) 
     os.rename(path,"c:\\opt\\attachments\\ignored\\tooOld_"+randomNum+"_"+fname) 
     time.sleep(2) 
    break 
+2

顯示您的代碼。 – TkTech

+1

請將您的代碼降低到仍然顯示錯誤的最短可能的完整程序。然後將整個簡短的完整程序複製粘貼到您的問題中。有關更多信息,請參閱http://stackoverflow.com/help/mcve。 –

回答

0

對錯誤代碼的快速谷歌搜索會產生一些超時結果。這可能是由兩個不同的事情引起的,與您的問題類似的問題是由於文件大小導致服務器由於上載時間過長而終止連接。

事情嘗試:請確保您有您的服務器上的最新版本的JIRA軟件,從而使錯誤修復應用,嘗試手動上傳一個較小的zip文件,看看是否可行。如果沒有任何作品嚐試報告jira網站上的錯誤。

文件大小票:https://jira.atlassian.com/plugins/servlet/mobile#issue/JRA-9037/comment/49681

+0

是的,Google是我的第一站。這不是尺寸問題。我嘗試了一個10kb的文件,而不是1mb的非壓縮文件。沒有壓縮的工作正常,壓縮沒有。 是的,我猜我會去JIRA網站。 – W3BGUY