Trip

Async HTTP for Humans, coroutine Requests ⛺️
Alternatives To Trip
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Acl2,570
5 days ago32lgpl-3.0C
A powerful server and network library, including coroutine, redis client, http, websocket, mqtt with C/C++ for multi-platform.
Mix1,868
24 days ago70August 05, 20211apache-2.0PHP
☄️ PHP CLI mode development framework, supports Swoole, WorkerMan, FPM, CLI-Server / PHP 命令行模式开发框架,支持 Swoole、Swow、WorkerMan、FPM、CLI-Server
Userver1,693
18 hours ago77apache-2.0C++
The C++ Asynchronous Framework (beta)
Node Practice1,330
6 years ago3mitJavaScript
Node.js 实践教程
Saber92816232 years ago28April 20, 202120apache-2.0PHP
⚔️ Saber, PHP异步协程HTTP客户端 | PHP Coroutine HTTP client - Swoole Humanization Library
Restc Cpp529
3 months ago57mitC++
Modern C++ REST Client library
Simps3952a year ago6October 15, 20202apache-2.0PHP
🚀 A simple, lightweight and high-performance PHP coroutine framework.
Shadowfax356
a year ago34January 15, 202211mitPHP
Run Laravel on Swoole.
Circuits284
4 months ago38otherPython
circuits is a Lightweight Event driven and Asynchronous Application Framework for the Python Programming Language with a strong Component Architecture.
Awesome Swoole270
3 years ago
A curated list of Swoole
Alternatives To Trip
Select To Compare


Alternative Project Comparisons
Readme

Trip: Async HTTP for Humans

pypi

TRIP, Tornado & Requests In Pair, an async HTTP library for Python.

Simple as Requests, Trip let you get rid of annoying network blocking.

Coroutine in python 2.7+ can be this simple:

import trip

def main():
    r = yield trip.get('https://httpbin.org/get', auth=('user', 'pass'))
    print(r.content)

trip.run(main)

With Trip, you may finish one hundred requests in one piece of time.

Trip gets its name from two powerful site packages and aims to combine them together. Trip refers to 'Tornado & Requests In Pair', TRIP. To put them together, I reused much of their codes about structure and dealing. Actually I only made little effort to make a mixture. Thanks to Tornado and Requests.

Through using Trip, you may take full advantage of Requests, including: Sessions with Cookie persistence, browser-style SSL verification, automatic content decoding, basic/digest authentication, elegant key/value Cookies. Meanwhile, your requests are coroutine like using AsyncHTTPClient of Tornado, network blocking will not be a problem.

Found difficult optimizing spiders' time consuming? Found tricky using asyncio http packages? Found heavy custimizing big spider framework? Try Trip, you will not regret!

Installation

Paste it into your console and enjoy:

python -m pip install trip

Documents

Documents are here: http://trip.readthedocs.io/zh/latest/

Advanced usage

Some of the advaced features are listed here:

Using async and await in python 3

import trip

async def main():
    r = await trip.get('https://httpbin.org/get', auth=('user', 'pass'))
    print(r.content)

trip.run(main)

Sessions with Cookie persistence

import trip

def main():
    s = trip.Session()
    r = yield s.get(
        'https://httpbin.org/cookies/set',
        params={'name': 'value'},
        allow_redirects=False)
    r = yield s.get('https://httpbin.org/cookies')
    print(r.content)

trip.run(main)

Event hooks

import trip

def main():
    def print_url(r, *args, **kwargs):
        print(r.url)
    def record_hook(r, *args, **kwargs):
        r.hook_called = True
        return r
    url = 'http://httpbin.org/get'
    r = yield trip.get('http://httpbin.org', hooks={'response': [print_url, record_hook]})
    print(r.hook_called)

trip.run(main)

Timeouts

import trip

def main():
    r = yield trip.get('http://github.com', timeout=0.001)
    print(r)

trip.run(main)

Proxy

import trip

proxies = {
    'http': '127.0.0.1:8080',
    'https': '127.0.0.1:8081',
}

def main():
    r = yield trip.get('https://httpbin.org/get', proxies=proxies)
    print(r.content)

trip.run(main)

How to contribute

  1. You may open an issue to share your ideas with me.
  2. Or fork this project and do it your own on master branch.
  3. Please write demo codes of bugs or new features. You know, codes help.
  4. Finally if you finish your work and make a pull request, I will merge it in time after essential tests.

Similiar projects

Popular Http Projects
Popular Coroutine Projects
Popular Networking Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Python
Http
Coroutines
Futures
Tornado