Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python/Twisted-如何打印更详细的错误消息_Python_Twisted - Fatal编程技术网

Python/Twisted-如何打印更详细的错误消息

Python/Twisted-如何打印更详细的错误消息,python,twisted,Python,Twisted,我运行以下代码: import argparse from tqdm import tqdm from sys import argv from pprint import pformat from twisted.internet.task import react from twisted.web.client import Agent, readBody from twisted.web.http_headers import Headers from twisted.internet

我运行以下代码:

import argparse

from tqdm import tqdm
from sys import argv
from pprint import pformat

from twisted.internet.task import react
from twisted.web.client import Agent, readBody
from twisted.web.http_headers import Headers
from twisted.internet.task import cooperate
from twisted.internet.defer import gatherResults

import sys
from twisted.python import log

log.startLogging(sys.stdout)

import lxml.html

from geoip import geolite2
import pycountry

from tld import get_tld
import json
import socket

poweredby = ""
server = ""
ip = ""

f = open("errors.txt", "w")


def error(response, url):
    f.write("Error: "+url+"\n") 


def cbRequest(response, url):
    global poweredby, server, ip
    # print 'Response version:', response.version
    # print 'Response code:', response.code
    # print 'Response phrase:', response.phrase
    # print 'Response headers:'
    # print pformat(list(response.headers.getAllRawHeaders()))
    poweredby = response.headers.getRawHeaders("X-Powered-By")[0]
    server = response.headers.getRawHeaders("Server")[0]

    #print poweredby
    #print server

    d = readBody(response)
    d.addCallback(cbBody, url)
    return d


def cbBody(body, ourl):
    global poweredby, server,ip

    #print body
    html_element = lxml.html.fromstring(body)
    generator = html_element.xpath("//meta[@name='generator']/@content")

    ip = socket.gethostbyname(ourl)

    try:
        match = geolite2.lookup(ip)
        if match is not None:
            country = match.country
            try:

                c = pycountry.countries.lookup(country)
                country = c.name
            except:
                country = ""

    except:
        country = ""
    try:
        res = get_tld("http://www" + ourl, as_object=True)
        tld = res.suffix
    except:
        tld = ""

    try:
        match = re.search(r'[\w\.-]+@[\w\.-]+', body)
        email = match.group(0)
    except:
        email = ""

    permalink=ourl.rstrip().replace(".","-")

    try:
        item = generator[0]
        val = "{ \"Domain\":" + json.dumps(
            "http://" + ourl.rstrip()) + ",\"IP\":\"" + ip + "\",\"Server\":" + json.dumps(
            str(server)) + ",\"PoweredBy\":" + json.dumps(
                str(poweredby)) + ",\"MetaGenerator\":" + json.dumps(item) + ",\"Email\":" + json.dumps(
                    email) + ",\"Suffix\":\"" + tld + "\",\"CountryHosted\":\"" + country+"\",\"permalink\":\""+permalink+"\" }"
    except:
        val = "{ \"Domain\":" + json.dumps(
            "http://" + ourl.rstrip()) + ",\"IP\":\"" + ip + "\"," + "\"Server\":" + json.dumps(
            str(server)) + ",\"PoweredBy\":" + json.dumps(
                str(poweredby)) + ",\"MetaGenerator\":\"\",\"Email\":" + json.dumps(
                    email) + ",\"Suffix\":\"" + tld + "\",\"CountryHosted\":\"" + country+"\",\"permalink\":\""+permalink+"\" }"


    print val


def main(reactor, url_path):
    urls = open(url_path)
    return mainjob(reactor, (url.strip() for url in urls))

def mainjob(reactor, urls=argv[2:]):
    #for url in urls:
    #  print url
    agent = Agent(reactor)
    work = (process(agent, url) for url in tqdm(urls))
    tasks = list(cooperate(work) for i in range(100))
    return gatherResults(list(task.whenDone() for task in tasks))



def process(agent, url):
    d = agent.request(
        'GET', "http://" + url,
        Headers({'User-Agent': ['crawler']}),
        None)
    d.debug=1
    d.addCallback(cbRequest, url)
    d.addErrback(error, url)  
    return d

react(main, ["./test.txt"])

f.close()
我启用了调试,不知何故,对于这2个条目,始终会调用addErrback(4次尝试中的4次),因此错误条目:

 user@laptop:~/crawler$ python scanner.py 
2017-02-25 20:35:36+0100 [-] Log opened.
0it [00:00, ?it/s]2017-02-25 20:35:36+0100 [-] Starting factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac1248>
2017-02-25 20:35:36+0100 [-] Starting factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac16c8>
2it [00:00, 660.31it/s]
2017-02-25 20:35:37+0100 [-] Stopping factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac1248>
2017-02-25 20:35:37+0100 [-] Stopping factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac16c8>
2017-02-25 20:35:37+0100 [-] Main loop terminated.
user@laptop:~/crawler$ cat errors.txt 
Error: google.al
Error: fau.edu.al
这是输出,每次运行时似乎都是一样的:

user@laptop:~/crawler$ python scanner.py 
2017-02-25 21:24:48+0100 [-] Log opened.
0it [00:00, ?it/s]2017-02-25 21:24:48+0100 [-] Starting factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac1200>
2017-02-25 21:24:48+0100 [-] Starting factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac1680>
2it [00:00, 788.33it/s]
2017-02-25 21:24:48+0100 [-] <type 'exceptions.TypeError'> [Failure instance: Traceback: <type 'exceptions.TypeError'>: 'NoneType' object has no attribute '__getitem__'
2017-02-25 21:24:48+0100 [-] /usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:565:_startRunCallbacks
2017-02-25 21:24:48+0100 [-] /usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:651:_runCallbacks
2017-02-25 21:24:48+0100 [-] /usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:457:callback
2017-02-25 21:24:48+0100 [-] /usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:565:_startRunCallbacks
2017-02-25 21:24:48+0100 [-] --- <exception caught here> ---
2017-02-25 21:24:48+0100 [-] /usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:651:_runCallbacks
2017-02-25 21:24:48+0100 [-] scanner.py:47:cbRequest
2017-02-25 21:24:48+0100 [-] ]
2017-02-25 21:24:48+0100 [HTTP11ClientProtocol,client] main function encountered error
    Traceback (most recent call last):
    Failure: twisted.internet.defer.FirstError: FirstError[#0, [Failure instance: Traceback: <type 'exceptions.AttributeError'>: 'exceptions.TypeError' object has no attribute 'reasons'
    /usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:565:_startRunCallbacks
    /usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:651:_runCallbacks
    /usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:457:callback
    /usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:565:_startRunCallbacks
    --- <exception caught here> ---
    /usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:651:_runCallbacks
    scanner.py:37:error
    ]]

2017-02-25 21:24:48+0100 [-] <class 'twisted.internet.error.ConnectError'> [Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.ConnectError'>: An error occurred while connecting: [Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.ConnectionLost'>: Connection to the other side was lost in a non-clean fashion: Connection lost.
2017-02-25 21:24:48+0100 [-] ].
2017-02-25 21:24:48+0100 [-] ]
2017-02-25 21:24:48+0100 [-] Stopping factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac1680>
2017-02-25 21:24:48+0100 [-] Stopping factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac1200>
2017-02-25 21:24:48+0100 [-] Main loop terminated.
2017-02-25 21:24:48+0100 [-] Unhandled error in Deferred:
2017-02-25 21:24:48+0100 [-] Unhandled Error
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/twisted/internet/base.py", line 1084, in connectionFailed
        self.factory.clientConnectionFailed(self, reason)
      File "/usr/local/lib/python2.7/dist-packages/twisted/internet/endpoints.py", line 246, in clientConnectionFailed
        self._onConnection.errback(reason)
      File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 498, in errback
        self._startRunCallbacks(fail)
      File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 565, in _startRunCallbacks
        self._runCallbacks()
    --- <exception caught here> ---
      File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 651, in _runCallbacks
        current.result = callback(current.result, *args, **kw)
      File "scanner.py", line 37, in error
        print failure.value.reasons[0].printTraceback()
    exceptions.AttributeError: 'ConnectError' object has no attribute 'reasons'

2017-02-25 21:24:48+0100 [-] Unhandled error in Deferred:
2017-02-25 21:24:48+0100 [-] Unhandled Error
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 565, in _startRunCallbacks
        self._runCallbacks()
      File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 651, in _runCallbacks
        current.result = callback(current.result, *args, **kw)
      File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 457, in callback
        self._startRunCallbacks(result)
      File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 565, in _startRunCallbacks
        self._runCallbacks()
    --- <exception caught here> ---
      File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 651, in _runCallbacks
        current.result = callback(current.result, *args, **kw)
      File "scanner.py", line 37, in error
        print failure.value.reasons[0].printTraceback()
    exceptions.AttributeError: 'exceptions.TypeError' object has no attribute 'reasons'
user@laptop:~/crawler$python scanner.py
2017-02-25 21:24:48+0100[-]日志打开。
0it[00:00,?it/s]2017-02-25 21:24:48+0100[-]启动工厂
2017-02-25 21:24:48+0100[-]启动工厂
2it[00:00788.33it/s]
2017-02-25 21:24:48+0100[-][故障实例:回溯::'NoneType'对象没有属性'\uu getitem''
2017-02-25 21:24:48+0100[-]/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:565:_startRunCallbacks
2017-02-25 21:24:48+0100[-]/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:651:_runCallbacks
2017-02-25 21:24:48+0100[-]/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:457:callback
2017-02-25 21:24:48+0100[-]/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:565:_startRunCallbacks
2017-02-25 21:24:48+0100 [-] ---  ---
2017-02-25 21:24:48+0100[-]/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:651:_runCallbacks
2017-02-25 21:24:48+0100[-]扫描仪py:47:cbRequest
2017-02-25 21:24:48+0100 [-] ]
2017-02-25 21:24:48+0100[HTTP11ClientProtocol,client]主功能遇到错误
回溯(最近一次呼叫最后一次):
失败:twisted.internet.defer.FirstError:FirstError[#0,[失败实例:回溯::“exceptions.TypeError”对象没有属性“Reasures”
/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:565:_startRunCallbacks
/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:651:_runCallbacks
/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:457:callback
/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:565:_startRunCallbacks
---  ---
/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py:651:_runCallbacks
scanner.py:37:错误
]]
2017-02-25 21:24:48+0100[-][故障实例:回溯(无帧故障)::连接时出错:[故障实例:回溯(无帧故障)::与另一端的连接以非干净方式丢失:连接丢失。
2017-02-25 21:24:48+0100 [-] ].
2017-02-25 21:24:48+0100 [-] ]
2017-02-25 21:24:48+0100[-]停厂
2017-02-25 21:24:48+0100[-]停厂
2017-02-25 21:24:48+0100[-]主回路终止。
2017-02-25 21:24:48+0100[-]延迟中未处理的错误:
2017-02-25 21:24:48+0100[-]未处理的错误
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python2.7/dist-packages/twisted/internet/base.py”,第1084行,连接失败
self.factory.clientConnection失败(self,原因)
clientConnectionFailed中的文件“/usr/local/lib/python2.7/dist packages/twisted/internet/endpoints.py”,第246行
self.\u onConnection.errback(原因)
文件“/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py”,第498行,在errback中
自启动返回(失败)
文件“/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py”,第565行,在startRunCallbacks中
self.\u runCallbacks()
---  ---
文件“/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py”,第651行,在runCallbacks中
current.result=回调(current.result,*args,**kw)
文件“scanner.py”第37行出错
打印失败。值。原因[0]。打印回溯()
exceptions.AttributeError:“ConnectError”对象没有属性“Reasions”
2017-02-25 21:24:48+0100[-]延迟中未处理的错误:
2017-02-25 21:24:48+0100[-]未处理的错误
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py”,第565行,在startRunCallbacks中
self.\u runCallbacks()
文件“/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py”,第651行,在runCallbacks中
current.result=回调(current.result,*args,**kw)
文件“/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py”,第457行,在回调中
自启动返回(结果)
文件“/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py”,第565行,在startRunCallbacks中
self.\u runCallbacks()
---  ---
文件“/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py”,第651行,在runCallbacks中
current.result=回调(current.result,*args,**kw)
文件“scanner.py”第37行出错
打印失败。值。原因[0]。打印回溯()
exceptions.AttributeError:“exceptions.TypeError”对象没有属性“Reasures”
更新2:

将错误函数修改为@Jean-Paul Calderone给出的示例后

我得到这个输出:

2017-02-27 17:46:57+0100 [-] Log opened.
0it [00:00, ?it/s]2017-02-27 17:46:57+0100 [-] Starting factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac0320>
2017-02-27 17:46:57+0100 [-] Starting factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac07a0>
2it [00:00, 763.36it/s]
2017-02-27 17:46:57+0100 [-] Traceback (most recent call last):
2017-02-27 17:46:57+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 565, in _startRunCallbacks
2017-02-27 17:46:57+0100 [-]     self._runCallbacks()
2017-02-27 17:46:57+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 651, in _runCallbacks
2017-02-27 17:46:57+0100 [-]     current.result = callback(current.result, *args, **kw)
2017-02-27 17:46:57+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 457, in callback
2017-02-27 17:46:57+0100 [-]     self._startRunCallbacks(result)
2017-02-27 17:46:57+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 565, in _startRunCallbacks
2017-02-27 17:46:57+0100 [-]     self._runCallbacks()
2017-02-27 17:46:57+0100 [-] --- <exception caught here> ---
2017-02-27 17:46:57+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 651, in _runCallbacks
2017-02-27 17:46:57+0100 [-]     current.result = callback(current.result, *args, **kw)
2017-02-27 17:46:57+0100 [-]   File "scan.py", line 59, in cbRequest
2017-02-27 17:46:57+0100 [-]     poweredby = response.headers.getRawHeaders("X-Powered-By")[0]
2017-02-27 17:46:57+0100 [-] exceptions.TypeError: 'NoneType' object has no attribute '__getitem__'
2017-02-27 17:46:57+0100 [-] Stopping factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac0320>
2017-02-27 17:46:59+0100 [-] Traceback (most recent call last):
2017-02-27 17:46:59+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 565, in _startRunCallbacks
2017-02-27 17:46:59+0100 [-]     self._runCallbacks()
2017-02-27 17:46:59+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 651, in _runCallbacks
2017-02-27 17:46:59+0100 [-]     current.result = callback(current.result, *args, **kw)
2017-02-27 17:46:59+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 457, in callback
2017-02-27 17:46:59+0100 [-]     self._startRunCallbacks(result)
2017-02-27 17:46:59+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 565, in _startRunCallbacks
2017-02-27 17:46:59+0100 [-]     self._runCallbacks()
2017-02-27 17:46:59+0100 [-] --- <exception caught here> ---
2017-02-27 17:46:59+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 651, in _runCallbacks
2017-02-27 17:46:59+0100 [-]     current.result = callback(current.result, *args, **kw)
2017-02-27 17:46:59+0100 [-]   File "scan.py", line 59, in cbRequest
2017-02-27 17:46:59+0100 [-]     poweredby = response.headers.getRawHeaders("X-Powered-By")[0]
2017-02-27 17:46:59+0100 [-] exceptions.TypeError: 'NoneType' object has no attribute '__getitem__'
2017-02-27 17:46:59+0100 [-] Stopping factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac07a0>
2017-02-27 17:46:59+0100 [-] Main loop terminated.
2017-02-27 17:46:57+0100[-]日志打开。
0it[00:00,?it/s]2017-02-27 17:46:57+0100[-]启动工厂
2017-02-27 17:46:57+0100[-]启动工厂
2it[00:00763.36it/s]
2017-02-27 17:46:57+0100[-]回溯(最近一次通话最后一次):
2017-02-27 17:46:57+0100[-]文件“/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py”,第565行,在startRunCallbacks中
2017-02-27 17:46:57+0100[-]self.\u runCallbacks()
2017-02-27 17:46:57+0100[-]文件“/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py”,第651行,运行回调
2017-02-27 17:46:57+0100[-]current.result=回调(current.result,*args,**kw)
2017-02-27 17:46:57+0100[-]文件“/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py”,第457行,在回调中
2017-02-27 17:46:57+0100[-]自我(结果)
2017-02-27 17:46:57+0100[-]文件“/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py”,第565行,在startRunCallbacks中
2017-02-27 17:46:57+0100[-]self.\u runCallbacks()
2017-02-27 17:46:57+0100 [-] ---  ---
2017-02-27 17:46:57+0100[-]Fil
2017-02-27 17:46:57+0100 [-] Log opened.
0it [00:00, ?it/s]2017-02-27 17:46:57+0100 [-] Starting factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac0320>
2017-02-27 17:46:57+0100 [-] Starting factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac07a0>
2it [00:00, 763.36it/s]
2017-02-27 17:46:57+0100 [-] Traceback (most recent call last):
2017-02-27 17:46:57+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 565, in _startRunCallbacks
2017-02-27 17:46:57+0100 [-]     self._runCallbacks()
2017-02-27 17:46:57+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 651, in _runCallbacks
2017-02-27 17:46:57+0100 [-]     current.result = callback(current.result, *args, **kw)
2017-02-27 17:46:57+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 457, in callback
2017-02-27 17:46:57+0100 [-]     self._startRunCallbacks(result)
2017-02-27 17:46:57+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 565, in _startRunCallbacks
2017-02-27 17:46:57+0100 [-]     self._runCallbacks()
2017-02-27 17:46:57+0100 [-] --- <exception caught here> ---
2017-02-27 17:46:57+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 651, in _runCallbacks
2017-02-27 17:46:57+0100 [-]     current.result = callback(current.result, *args, **kw)
2017-02-27 17:46:57+0100 [-]   File "scan.py", line 59, in cbRequest
2017-02-27 17:46:57+0100 [-]     poweredby = response.headers.getRawHeaders("X-Powered-By")[0]
2017-02-27 17:46:57+0100 [-] exceptions.TypeError: 'NoneType' object has no attribute '__getitem__'
2017-02-27 17:46:57+0100 [-] Stopping factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac0320>
2017-02-27 17:46:59+0100 [-] Traceback (most recent call last):
2017-02-27 17:46:59+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 565, in _startRunCallbacks
2017-02-27 17:46:59+0100 [-]     self._runCallbacks()
2017-02-27 17:46:59+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 651, in _runCallbacks
2017-02-27 17:46:59+0100 [-]     current.result = callback(current.result, *args, **kw)
2017-02-27 17:46:59+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 457, in callback
2017-02-27 17:46:59+0100 [-]     self._startRunCallbacks(result)
2017-02-27 17:46:59+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 565, in _startRunCallbacks
2017-02-27 17:46:59+0100 [-]     self._runCallbacks()
2017-02-27 17:46:59+0100 [-] --- <exception caught here> ---
2017-02-27 17:46:59+0100 [-]   File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 651, in _runCallbacks
2017-02-27 17:46:59+0100 [-]     current.result = callback(current.result, *args, **kw)
2017-02-27 17:46:59+0100 [-]   File "scan.py", line 59, in cbRequest
2017-02-27 17:46:59+0100 [-]     poweredby = response.headers.getRawHeaders("X-Powered-By")[0]
2017-02-27 17:46:59+0100 [-] exceptions.TypeError: 'NoneType' object has no attribute '__getitem__'
2017-02-27 17:46:59+0100 [-] Stopping factory <twisted.web.client._HTTP11ClientFactory instance at 0x7fffefac07a0>
2017-02-27 17:46:59+0100 [-] Main loop terminated.
<class 'twisted.internet.error.ConnectError'> [Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.ConnectError'>: An error occurred while connecting: [Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.ConnectionLost'>: Connection to the other side was lost in a non-clean fashion: Connection lost.
  File "scanner.py", line 37, in error
    print failure.value.reasons[0].printTraceback()
exceptions.AttributeError: 'exceptions.TypeError' object has no attribute 'reasons'
from twisted.web._newclient import (
    RequestGenerationFailed, 
    RequestTransmissionFailed,
    ResponseFailed,
)

def error(failure, url):
    f.write("Error: "+url+"\n") 
    if failure.check(
        RequestGenerationFailed,
        RequestTransmissionFailed,
        ResponseFailed,
    ):
        failure.value.reasons[0].printTraceback()
    else:
        failure.printTraceback()