Skip to main content

Low level event reactor for Pyjoyment with asyncio support.

Project description

https://img.shields.io/pypi/v/Pyjo-Reactor-Asyncio.png https://travis-ci.org/dex4er/Pyjo-Reactor-Asyncio.png?branch=master https://readthedocs.org/projects/pyjo-reactor-asyncio/badge/?version=latest

Pyjo-Reactor-Asyncio

Low level event reactor with asyncio support for Pyjoyment.

Pyjoyment

An asynchronous, event driver web framework for the Python programming language.

Pyjoyment provides own reactor which handles I/O and timer events in its own main event loop but it supports other loops, ie. libev or asyncio.

See http://www.pyjoyment.net/

asyncio

This module provides infrastructure for writing single-threaded concurrent code using coroutines, multiplexing I/O access over sockets and other resources, running network clients and servers, and other related primitives.

The asyncio module was designed in PEP3156. For a motivational primer on transports and protocols, see PEP3153.

See http://asyncio.org/

Trollius

Trollius is a portage of the asyncio project (PEP3156) on Python 2. Trollius works on Python 2.6-3.5.

See https://trollius.readthedocs.org/

Examples

Non-blocking TCP client/server

import Pyjo.Reactor.Asyncio
import Pyjo.IOLoop


# Listen on port 3000
@Pyjo.IOLoop.server(port=3000)
def server(loop, stream, cid):

    @stream.on
    def read(stream, chunk):
        # Process input chunk
        print("Server: {0}".format(chunk.decode('utf-8')))

        # Write response
        stream.write(b"HTTP/1.1 200 OK\x0d\x0a\x0d\x0a")

        # Disconnect client
        stream.close_gracefully()


# Connect to port 3000
@Pyjo.IOLoop.client(port=3000)
def client(loop, err, stream):

    @stream.on
    def read(stream, chunk):
        # Process input
        print("Client: {0}".format(chunk.decode('utf-8')))

    # Write request
    stream.write(b"GET / HTTP/1.1\x0d\x0a\x0d\x0a")


# Add a timer
@Pyjo.IOLoop.timer(3)
def timeouter(loop):
    print("Timeout")
    # Shutdown server
    loop.remove(server)


# Start event loop
Pyjo.IOLoop.start()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Pyjo-Reactor-Asyncio-0.0.1.tar.gz (5.2 kB view hashes)

Uploaded Source

Built Distribution

Pyjo_Reactor_Asyncio-0.0.1-py2.py3-none-any.whl (7.7 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page