Last active
June 16, 2020 19:03
-
-
Save sophiawisdom/91d2b4f0547ca43c40f460b5ee00ba97 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from twisted.internet import asyncioreactor | |
# may need to be installed before other twisted imports? | |
asyncioreactor.install() | |
from twisted.internet import reactor | |
from twisted.web.resource import Resource | |
from twisted.internet.defer import ensureDeferred | |
from twisted.web.server import Site, NOT_DONE_YET | |
import time | |
import aiohttp | |
import asyncio | |
async def getWebsite(site): | |
print("getWebsite was called") | |
async with aiohttp.ClientSession() as session: | |
print("got session") | |
async with session.get(site) as resp: | |
print("getwebsite about to return") | |
return await resp.text() | |
async def test(): | |
await asyncio.sleep(1) | |
return "hey!!" | |
class DelayedEndpoint(Resource): | |
def render_GET(self, req): | |
d = ensureDeferred(test()) | |
def callback(x): | |
print("Callback got arg", x) | |
req.write(bytes(x, 'utf-8')) | |
req.finish() | |
d.addCallback(callback) | |
''' | |
orig = time.time() | |
reactor.callLater(2, print, "test") | |
def callback(): | |
req.write(f"render method was called at {orig:.4f}, we're being called at {time.time():.4f} (diff {time.time()-orig:.4f})".encode()) | |
# req.finish() | |
reactor.callLater(3, callback) | |
# d.addCallback(print) | |
# reactor callLater | |
''' | |
return NOT_DONE_YET | |
root = Resource() | |
root.putChild(b"getWeb", DelayedEndpoint()) | |
reactor.listenTCP(7080, Site(root)) | |
reactor.run() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from twisted.internet import asyncioreactor | |
# may need to be installed before other twisted imports? | |
asyncioreactor.install() | |
from twisted.internet import reactor | |
from twisted.web.resource import Resource | |
from twisted.internet.defer import ensureDeferred | |
from twisted.web.server import Site, NOT_DONE_YET | |
import time | |
import aiohttp | |
async def getWebsite(site): | |
print("getWebsite was called") | |
async with aiohttp.ClientSession() as session: | |
print("got session") | |
async with session.get(site) as resp: | |
print("getwebsite about to return") | |
return await resp.text() | |
class DelayedEndpoint(Resource): | |
def render_GET(self, req): | |
d = ensureDeferred(getWebsite('http://httpbin.org/get')) | |
def callback(x): | |
print("Callback got arg", x) | |
req.write(bytes(x, 'utf-8')) | |
req.finish() | |
d.addCallback(callback) | |
''' | |
orig = time.time() | |
reactor.callLater(2, print, "test") | |
def callback(): | |
req.write(f"render method was called at {orig:.4f}, we're being called at {time.time():.4f} (diff {time.time()-orig:.4f})".encode()) | |
# req.finish() | |
reactor.callLater(3, callback) | |
# d.addCallback(print) | |
# reactor callLater | |
''' | |
return NOT_DONE_YET | |
root = Resource() | |
root.putChild(b"getWeb", DelayedEndpoint()) | |
reactor.listenTCP(7080, Site(root)) | |
reactor.run() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from twisted.internet import asyncioreactor | |
# may need to be installed before other twisted imports? | |
asyncioreactor.install() | |
from twisted.internet import reactor | |
from twisted.internet import defer | |
from twisted.web.resource import Resource | |
from twisted.internet.defer import ensureDeferred | |
from twisted.web.server import Site, NOT_DONE_YET | |
import time | |
import aiohttp | |
import asyncio | |
async def getWebsite(site): | |
print("getWebsite was called") | |
async with aiohttp.ClientSession() as session: | |
print("got session") | |
async with session.get(site) as resp: | |
print("getwebsite about to return") | |
return await resp.text() | |
async def test(): | |
await asyncio.sleep(1) | |
return "hey!!" | |
class DelayedEndpoint(Resource): | |
def render_GET(self, req): | |
d = defer.Deferred.fromFuture(asyncio.ensure_future(getWebsite("http://www.google.com"))) | |
# d = ensureDeferred(test()) | |
def callback(x): | |
print("Callback got arg", x) | |
req.write(bytes(x, 'utf-8')) | |
req.finish() | |
d.addCallback(callback) | |
''' | |
orig = time.time() | |
reactor.callLater(2, print, "test") | |
def callback(): | |
req.write(f"render method was called at {orig:.4f}, we're being called at {time.time():.4f} (diff {time.time()-orig:.4f})".encode()) | |
# req.finish() | |
reactor.callLater(3, callback) | |
# d.addCallback(print) | |
# reactor callLater | |
''' | |
return NOT_DONE_YET | |
root = Resource() | |
root.putChild(b"getWeb", DelayedEndpoint()) | |
reactor.listenTCP(7080, Site(root)) | |
reactor.run() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment