Last active
September 22, 2018 07:53
-
-
Save whalebot-helmsman/c400eb66c0bd35e406de3f8f704adf13 to your computer and use it in GitHub Desktop.
Mix asyncio with twisted
This file contains 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
import asyncio | |
import logging | |
async def start(): | |
logging.warning('started') | |
await asyncio.sleep(2) | |
logging.warning('finished') | |
async def main(): | |
logging.basicConfig( | |
level=logging.INFO, | |
format=( | |
'%(asctime)s [%(levelname)s] PID:%(process)s ' | |
'%(pathname)s:%(lineno)d %(message)s' | |
) | |
) | |
await asyncio.gather(start(), | |
start()) | |
if __name__ == "__main__": | |
loop = asyncio.get_event_loop() | |
loop.run_until_complete(main()) | |
loop.close() | |
This file contains 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
import logging | |
from twisted.internet import reactor, defer | |
def sleep(_): | |
d = defer.Deferred() | |
reactor.callLater(2, d.callback, None) | |
return d | |
def end(_): | |
logging.warning('finished') | |
async def start(_): | |
logging.warning('started') | |
await sleep(None) | |
return _ | |
def main(): | |
logging.basicConfig( | |
level=logging.INFO, | |
format=( | |
'%(asctime)s [%(levelname)s] PID:%(process)s ' | |
'%(pathname)s:%(lineno)d %(message)s' | |
) | |
) | |
for _ in range(2): | |
d = defer.ensureDeferred(start(None)) | |
d.pause() | |
d.addCallback(end) | |
d.unpause() | |
reactor.run() | |
if __name__ == "__main__": | |
main() | |
This file contains 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
import asyncio | |
import logging | |
from twisted.internet import asyncioreactor | |
asyncioreactor.install(asyncio.get_event_loop()) | |
from twisted.internet import defer, reactor | |
def end(_): | |
logging.warning('finished') | |
async def start(_): | |
logging.warning('started') | |
await defer.ensureDeferred(asyncio.sleep(2)) | |
return _ | |
def main(): | |
logging.basicConfig( | |
level=logging.INFO, | |
format=( | |
'%(asctime)s [%(levelname)s] PID:%(process)s ' | |
'%(pathname)s:%(lineno)d %(message)s' | |
) | |
) | |
for _ in range(2): | |
d = defer.Deferred(defer.ensureDeferred(start(None))) | |
d.pause() | |
d.addCallback(end) | |
d.unpause() | |
d.callback(None) | |
reactor.run() | |
if __name__ == "__main__": | |
main() |
This file contains 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
import logging | |
from twisted.internet import reactor, defer | |
defer.setDebugging(True) | |
def sleep(_): | |
d = defer.Deferred() | |
reactor.callLater(2, d.callback, None) | |
return d | |
def end(_): | |
logging.warning('finished') | |
def start(_): | |
logging.warning('started') | |
return _ | |
def main(): | |
logging.basicConfig( | |
level=logging.INFO, | |
format=( | |
'%(asctime)s [%(levelname)s] PID:%(process)s ' | |
'%(pathname)s:%(lineno)d %(message)s' | |
) | |
) | |
for _ in range(2): | |
d = defer.Deferred() | |
d.pause() | |
d.addCallback(start) | |
d.addCallback(sleep) | |
d.addCallback(end) | |
d.unpause() | |
d.callback(None) | |
reactor.run() | |
if __name__ == "__main__": | |
main() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment