2016-11-16 4 views
0

Ich habe BotoServerError in Scrapy beim Hochladen von Bildern auf AWS S3, weil es zufällig ein Server ist. Wie kann ich mit diesen Fehlern umgehen, damit ich die Elementpipeline für eine Weile in den Ruhezustand versetzen und den Upload erneut versuchen kann?Wiederholen Unhandled Fehler in Deferred: in scrapy

2016-11-17 05:59:55 [twisted] CRITICAL: 
Traceback (most recent call last): 
    File "D:\Kerja\HIT\PYTHON~1\SMARTE~1\SMARTE~1\lib\site-packages\twisted\python\threadpool.py", line 246, in inContext 
    result = inContext.theWork() 
    File "D:\Kerja\HIT\PYTHON~1\SMARTE~1\SMARTE~1\lib\site-packages\twisted\python\threadpool.py", line 262, in <lambda> 
    inContext.theWork = lambda: context.call(ctx, func, *args, **kw) 
    File "D:\Kerja\HIT\PYTHON~1\SMARTE~1\SMARTE~1\lib\site-packages\twisted\python\context.py", line 118, in callWithContext 
    return self.currentContext().callWithContext(ctx, func, *args, **kw) 
    File "D:\Kerja\HIT\PYTHON~1\SMARTE~1\SMARTE~1\lib\site-packages\twisted\python\context.py", line 81, in callWithContext 
    return func(*args,**kw) 
    File "D:\Kerja\HIT\PYTHON~1\SMARTE~1\SMARTE~1\lib\site-packages\boto\s3\key.py", line 1426, in set_contents_from_string 
    encrypt_key=encrypt_key) 
    File "D:\Kerja\HIT\PYTHON~1\SMARTE~1\SMARTE~1\lib\site-packages\boto\s3\key.py", line 1293, in set_contents_from_file 
    chunked_transfer=chunked_transfer, size=size) 
    File "D:\Kerja\HIT\PYTHON~1\SMARTE~1\SMARTE~1\lib\site-packages\boto\s3\key.py", line 750, in send_file 
    chunked_transfer=chunked_transfer, size=size) 
    File "D:\Kerja\HIT\PYTHON~1\SMARTE~1\SMARTE~1\lib\site-packages\boto\s3\key.py", line 951, in _send_file_internal 
    query_args=query_args 
    File "D:\Kerja\HIT\PYTHON~1\SMARTE~1\SMARTE~1\lib\site-packages\boto\s3\connection.py", line 668, in make_request 
    retry_handler=retry_handler 
    File "D:\Kerja\HIT\PYTHON~1\SMARTE~1\SMARTE~1\lib\site-packages\boto\connection.py", line 1071, in make_request 
    retry_handler=retry_handler) 
    File "D:\Kerja\HIT\PYTHON~1\SMARTE~1\SMARTE~1\lib\site-packages\boto\connection.py", line 1028, in _mexe 
    raise BotoServerError(response.status, response.reason, body) 
BotoServerError: BotoServerError: 503 Service Unavailable 
+1

Ich glaube nicht, dass Scrapy S3 Upload-Handler erneut versucht. Ich bin mir nicht sicher, dass es eine andere Lösung gibt als die Migration zu boto3 (es gibt [ein offenes Problem dafür] (https://github.com/scrapy/scrapy/issues/1866)) –

+0

Sie können auch versuchen, 'botocore' zu ​​installieren (Scrapy wird "Botocore" statt "Boto" verwenden, wenn es verfügbar ist). Es scheint, dass Botocore einige Versuche unternimmt (ich kann jedoch nicht viel Detail darüber finden) –

+0

Danke! 'boto3' löst es! –

Antwort

0

Dank @paul! Basierend auf seiner Antwort, löse ich es, indem ich das Paket boto deinstalliere und stattdessen das Paket boto3 installiere.