Skip to content

Instantly share code, notes, and snippets.

@oubiwann
Created October 13, 2012 21:01

Revisions

  1. Duncan McGreggor revised this gist Oct 13, 2012. 8 changed files with 0 additions and 0 deletions.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
  2. Duncan McGreggor revised this gist Oct 13, 2012. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion cooperator.py
    Original file line number Diff line number Diff line change
    @@ -5,7 +5,6 @@

    urls = [
    'http://twistedmatrix.com',
    'http://twistedsoftwarefoundation.org',
    'http://yahoo.com',
    'http://www.google.com',
    ]
  3. Duncan McGreggor revised this gist Oct 13, 2012. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion deferred-semaphore.py
    Original file line number Diff line number Diff line change
    @@ -5,7 +5,6 @@

    urls = [
    'http://twistedmatrix.com',
    'http://twistedsoftwarefoundation.org',
    'http://yahoo.com',
    'http://www.google.com',
    ]
  4. Duncan McGreggor revised this gist Oct 13, 2012. 8 changed files with 15 additions and 23 deletions.
    3 changes: 1 addition & 2 deletions cooperator.py
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,5 @@
    from twisted.internet import reactor
    from twisted.internet import defer, reactor, task
    from twisted.web.client import getPage
    from twisted.internet import defer, task

    maxRun = 2

    5 changes: 2 additions & 3 deletions deferred-list-results.py
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,5 @@
    from twisted.internet import reactor
    from twisted.internet import defer, reactor
    from twisted.web.client import getPage
    from twisted.internet.defer import DeferredList

    def listCallback(results):
    for isSuccess, content in results:
    @@ -13,7 +12,7 @@ def finish(ign):
    def test():
    d1 = getPage('http://www.google.com')
    d2 = getPage('http://yahoo.com')
    dl = DeferredList([d1, d2])
    dl = defer.DeferredList([d1, d2])
    dl.addCallback(listCallback)
    dl.addCallback(finish)

    7 changes: 3 additions & 4 deletions deferred-list.py
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,5 @@
    from twisted.internet import reactor
    from twisted.internet import defer, reactor
    from twisted.web.client import getPage
    from twisted.internet.defer import DeferredList

    def listCallback(results):
    print results
    @@ -11,9 +10,9 @@ def finish(ign):
    def test():
    d1 = getPage('http://www.google.com')
    d2 = getPage('http://yahoo.com')
    dl = DeferredList([d1, d2])
    dl = defer.DeferredList([d1, d2])
    dl.addCallback(listCallback)
    dl.addCallback(finish)

    test()
    reactor.run()
    reactor.run()
    3 changes: 1 addition & 2 deletions deferred-semaphore.py
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,5 @@
    from twisted.internet import reactor
    from twisted.internet import defer, reactor
    from twisted.web.client import getPage
    from twisted.internet import defer

    maxRun = 1

    5 changes: 2 additions & 3 deletions error-checking.py
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,5 @@
    from twisted.internet import reactor
    from twisted.internet import defer, reactor
    from twisted.web.client import getPage
    from twisted.internet.defer import DeferredList

    urls = [
    'http://yahoo.com',
    @@ -45,7 +44,7 @@ def test():
    for url in urls:
    d = getPageData(url)
    deferreds.append(d)
    dl = DeferredList(deferreds, consumeErrors=1)
    dl = defer.DeferredList(deferreds, consumeErrors=1)
    dl.addCallback(listCallback)
    dl.addCallback(finish)

    5 changes: 2 additions & 3 deletions page-callbacks.py
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,5 @@
    from twisted.internet import reactor
    from twisted.internet import defer, reactor
    from twisted.web.client import getPage
    from twisted.internet.defer import DeferredList

    def pageCallback(result):
    return len(result)
    @@ -16,7 +15,7 @@ def test():
    d1.addCallback(pageCallback)
    d2 = getPage('http://yahoo.com')
    d2.addCallback(pageCallback)
    dl = DeferredList([d1, d2])
    dl = defer.DeferredList([d1, d2])
    dl.addCallback(listCallback)
    dl.addCallback(finish)

    5 changes: 2 additions & 3 deletions passing-values.py
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,5 @@
    from twisted.internet import reactor
    from twisted.internet import defer, reactor
    from twisted.web.client import getPage
    from twisted.internet.defer import DeferredList

    def pageCallback(result, url):
    data = {
    @@ -26,7 +25,7 @@ def finish(ign):
    def test():
    d1 = getPageData('http://www.google.com')
    d2 = getPageData('http://yahoo.com')
    dl = DeferredList([d1, d2])
    dl = defer.DeferredList([d1, d2])
    dl.addCallback(listCallback)
    dl.addCallback(finish)

    5 changes: 2 additions & 3 deletions results-with-structure.py
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,5 @@
    from twisted.internet import reactor
    from twisted.internet import defer, reactor
    from twisted.web.client import getPage
    from twisted.internet.defer import DeferredList

    def pageCallback(result):
    data = {
    @@ -22,7 +21,7 @@ def test():
    d1.addCallback(pageCallback)
    d2 = getPage('http://yahoo.com')
    d2.addCallback(pageCallback)
    dl = DeferredList([d1, d2])
    dl = defer.DeferredList([d1, d2])
    dl.addCallback(listCallback)
    dl.addCallback(finish)

  5. Duncan McGreggor revised this gist Oct 13, 2012. 7 changed files with 232 additions and 0 deletions.
    38 changes: 38 additions & 0 deletions cooperator.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,38 @@
    from twisted.internet import reactor
    from twisted.web.client import getPage
    from twisted.internet import defer, task

    maxRun = 2

    urls = [
    'http://twistedmatrix.com',
    'http://twistedsoftwarefoundation.org',
    'http://yahoo.com',
    'http://www.google.com',
    ]

    def pageCallback(result):
    print len(result)
    return result

    def doWork():
    for url in urls:
    d = getPage(url)
    d.addCallback(pageCallback)
    yield d

    def finish(ign):
    reactor.stop()

    def test():
    deferreds = []
    coop = task.Cooperator()
    work = doWork()
    for i in xrange(maxRun):
    d = coop.coiterate(work)
    deferreds.append(d)
    dl = defer.DeferredList(deferreds)
    dl.addCallback(finish)

    test()
    reactor.run()
    21 changes: 21 additions & 0 deletions deferred-list-results.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@
    from twisted.internet import reactor
    from twisted.web.client import getPage
    from twisted.internet.defer import DeferredList

    def listCallback(results):
    for isSuccess, content in results:
    print "Successful? %s" % isSuccess
    print "Content Length: %s" % len(content)

    def finish(ign):
    reactor.stop()

    def test():
    d1 = getPage('http://www.google.com')
    d2 = getPage('http://yahoo.com')
    dl = DeferredList([d1, d2])
    dl.addCallback(listCallback)
    dl.addCallback(finish)

    test()
    reactor.run()
    32 changes: 32 additions & 0 deletions deferred-semaphore.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,32 @@
    from twisted.internet import reactor
    from twisted.web.client import getPage
    from twisted.internet import defer

    maxRun = 1

    urls = [
    'http://twistedmatrix.com',
    'http://twistedsoftwarefoundation.org',
    'http://yahoo.com',
    'http://www.google.com',
    ]

    def listCallback(results):
    for isSuccess, result in results:
    print len(result)

    def finish(ign):
    reactor.stop()

    def test():
    deferreds = []
    sem = defer.DeferredSemaphore(maxRun)
    for url in urls:
    d = sem.run(getPage, url)
    deferreds.append(d)
    dl = defer.DeferredList(deferreds)
    dl.addCallback(listCallback)
    dl.addCallback(finish)

    test()
    reactor.run()
    53 changes: 53 additions & 0 deletions error-checking.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,53 @@
    from twisted.internet import reactor
    from twisted.web.client import getPage
    from twisted.internet.defer import DeferredList

    urls = [
    'http://yahoo.com',
    'http://www.google.com',
    'http://www.google.com/MicrosoftRules.html',
    'http://bogusdomain.com',
    ]

    def pageCallback(result, url):
    data = {
    'length': len(result),
    'content': result[:10],
    'url': url,
    }
    return data

    def pageErrback(error, url):
    return {
    'msg': error.getErrorMessage(),
    'err': error,
    'url': url,
    }

    def getPageData(url):
    d = getPage(url, timeout=5)
    d.addCallback(pageCallback, url)
    d.addErrback(pageErrback, url)
    return d

    def listCallback(result):
    for ignore, data in result:
    if data.has_key('err'):
    print "Call to %s failed with data %s" % (data['url'], str(data))
    else:
    print "Call to %s succeeded with data %s" % (data['url'], str(data))

    def finish(ign):
    reactor.stop()

    def test():
    deferreds = []
    for url in urls:
    d = getPageData(url)
    deferreds.append(d)
    dl = DeferredList(deferreds, consumeErrors=1)
    dl.addCallback(listCallback)
    dl.addCallback(finish)

    test()
    reactor.run()
    24 changes: 24 additions & 0 deletions page-callbacks.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    from twisted.internet import reactor
    from twisted.web.client import getPage
    from twisted.internet.defer import DeferredList

    def pageCallback(result):
    return len(result)

    def listCallback(result):
    print result

    def finish(ign):
    reactor.stop()

    def test():
    d1 = getPage('http://www.google.com')
    d1.addCallback(pageCallback)
    d2 = getPage('http://yahoo.com')
    d2.addCallback(pageCallback)
    dl = DeferredList([d1, d2])
    dl.addCallback(listCallback)
    dl.addCallback(finish)

    test()
    reactor.run()
    34 changes: 34 additions & 0 deletions passing-values.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,34 @@
    from twisted.internet import reactor
    from twisted.web.client import getPage
    from twisted.internet.defer import DeferredList

    def pageCallback(result, url):
    data = {
    'length': len(result),
    'content': result[:10],
    'url': url,
    }
    return data

    def getPageData(url):
    d = getPage(url)
    d.addCallback(pageCallback, url)
    return d

    def listCallback(result):
    for isSuccess, data in result:
    if isSuccess:
    print "Call to %s succeeded with data %s" % (data['url'], str(data))

    def finish(ign):
    reactor.stop()

    def test():
    d1 = getPageData('http://www.google.com')
    d2 = getPageData('http://yahoo.com')
    dl = DeferredList([d1, d2])
    dl.addCallback(listCallback)
    dl.addCallback(finish)

    test()
    reactor.run()
    30 changes: 30 additions & 0 deletions results-with-structure.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    from twisted.internet import reactor
    from twisted.web.client import getPage
    from twisted.internet.defer import DeferredList

    def pageCallback(result):
    data = {
    'length': len(result),
    'content': result[:10],
    }
    return data

    def listCallback(result):
    for isSuccess, data in result:
    if isSuccess:
    print "Call to server succeeded with data %s" % str(data)

    def finish(ign):
    reactor.stop()

    def test():
    d1 = getPage('http://www.google.com')
    d1.addCallback(pageCallback)
    d2 = getPage('http://yahoo.com')
    d2.addCallback(pageCallback)
    dl = DeferredList([d1, d2])
    dl.addCallback(listCallback)
    dl.addCallback(finish)

    test()
    reactor.run()
  6. Duncan McGreggor created this gist Oct 13, 2012.
    19 changes: 19 additions & 0 deletions deferred-list.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,19 @@
    from twisted.internet import reactor
    from twisted.web.client import getPage
    from twisted.internet.defer import DeferredList

    def listCallback(results):
    print results

    def finish(ign):
    reactor.stop()

    def test():
    d1 = getPage('http://www.google.com')
    d2 = getPage('http://yahoo.com')
    dl = DeferredList([d1, d2])
    dl.addCallback(listCallback)
    dl.addCallback(finish)

    test()
    reactor.run()