Skip to content

Instantly share code, notes, and snippets.

@sophiawisdom
Last active June 16, 2020 19:03
Show Gist options
  • Save sophiawisdom/91d2b4f0547ca43c40f460b5ee00ba97 to your computer and use it in GitHub Desktop.
Save sophiawisdom/91d2b4f0547ca43c40f460b5ee00ba97 to your computer and use it in GitHub Desktop.
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()
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()
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