Async http client/server framework (asyncio)
Project description
Async http client/server framework
Key Features
Supports both client and server side of HTTP protocol.
Supports both client and server Web-Sockets out-of-the-box and avoids Callback Hell.
Provides Web-server with middlewares and plugable routing.
Getting started
Client
To get something from the web:
import aiohttp
import asyncio
async def main():
async with aiohttp.ClientSession() as session:
async with session.get('http://python.org') as response:
print("Status:", response.status)
print("Content-type:", response.headers['content-type'])
html = await response.text()
print("Body:", html[:15], "...")
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
This prints:
Status: 200
Content-type: text/html; charset=utf-8
Body: <!doctype html> ...
Comming from requests ? Read why we need so many lines.
Server
An example using a simple server:
# examples/server_simple.py
from aiohttp import web
async def handle(request):
name = request.match_info.get('name', "Anonymous")
text = "Hello, " + name
return web.Response(text=text)
async def wshandle(request):
ws = web.WebSocketResponse()
await ws.prepare(request)
async for msg in ws:
if msg.type == web.WSMsgType.text:
await ws.send_str("Hello, {}".format(msg.data))
elif msg.type == web.WSMsgType.binary:
await ws.send_bytes(msg.data)
elif msg.type == web.WSMsgType.close:
break
return ws
app = web.Application()
app.add_routes([web.get('/', handle),
web.get('/echo', wshandle),
web.get('/{name}', handle)])
if __name__ == '__main__':
web.run_app(app)
Documentation
Demos
External links
Feel free to make a Pull Request for adding your link to these pages!
Communication channels
aio-libs discourse group: https://aio-libs.discourse.group
gitter chat https://gitter.im/aio-libs/Lobby
We support Stack Overflow. Please add aiohttp tag to your question there.
Requirements
Python >= 3.5.3
Optionally you may install the cChardet and aiodns libraries (highly recommended for sake of speed).
License
aiohttp is offered under the Apache 2 license.
Keepsafe
The aiohttp community would like to thank Keepsafe (https://www.getkeepsafe.com) for its support in the early days of the project.
Source code
The latest developer version is available in a GitHub repository: https://github.com/aio-libs/aiohttp
Benchmarks
If you are interested in efficiency, the AsyncIO community maintains a list of benchmarks on the official wiki: https://github.com/python/asyncio/wiki/Benchmarks
Changelog
3.6.3 (2020-10-12)
Bugfixes
Pin yarl to <1.6.0 to avoid buggy behavior that will be fixed by the next aiohttp release.
3.6.2 (2019-10-09)
Features
Bugfixes
Reset the sock_read timeout each time data is received for a aiohttp.ClientResponse. #3808
Fix handling of expired cookies so they are not stored in CookieJar. #4063
Fix misleading message in the string representation of ClientConnectorError; self.ssl == None means default SSL context, not SSL disabled #4097
Don’t clobber HTTP status when using FileResponse. #4106
Improved Documentation
Misc
3.6.1 (2019-09-19)
Features
Compatibility with Python 3.8. #4056
Bugfixes
Improved Documentation
Provide pytest-aiohttp namespace for pytest fixtures in docs. #3723
3.6.0 (2019-09-06)
Features
Add support for Named Pipes (Site and Connector) under Windows. This feature requires Proactor event loop to work. #3629
Removed Transfer-Encoding: chunked header from websocket responses to be compatible with more http proxy servers. #3798
Accept non-GET request for starting websocket handshake on server side. #3980
Bugfixes
Raise a ClientResponseError instead of an AssertionError for a blank HTTP Reason Phrase. #3532
Fix an issue where cookies would sometimes not be set during a redirect. #3576
Change normalize_path_middleware to use 308 redirect instead of 301.
This behavior should prevent clients from being unable to use PUT/POST methods on endpoints that are redirected because of a trailing slash. #3579
Drop the processed task from all_tasks() list early. It prevents logging about a task with unhandled exception when the server is used in conjunction with asyncio.run(). #3587
Signal type annotation changed from Signal[Callable[['TraceConfig'], Awaitable[None]]] to Signal[Callable[ClientSession, SimpleNamespace, ...]. #3595
Use sanitized URL as Location header in redirects #3614
Improve typing annotations for multipart.py along with changes required by mypy in files that references multipart.py. #3621
Close session created inside aiohttp.request when unhandled exception occurs #3628
Cleanup per-chunk data in generic data read. Memory leak fixed. #3631
Use correct type for add_view and family #3633
Fix _keepalive field in __slots__ of RequestHandler. #3644
Properly handle ConnectionResetError, to silence the “Cannot write to closing transport” exception when clients disconnect uncleanly. #3648
Suppress pytest warnings due to test_utils classes #3660
Fix overshadowing of overlapped sub-application prefixes. #3701
Fixed return type annotation for WSMessage.json() #3720
Properly expose TooManyRedirects publicly as documented. #3818
Fix missing brackets for IPv6 in proxy CONNECT request #3841
Make the signature of aiohttp.test_utils.TestClient.request match asyncio.ClientSession.request according to the docs #3852
Use correct style for re-exported imports, makes mypy --strict mode happy. #3868
Fixed type annotation for add_view method of UrlDispatcher to accept any subclass of View #3880
Made cython HTTP parser set Reason-Phrase of the response to an empty string if it is missing. #3906
Add URL to the string representation of ClientResponseError. #3959
Accept istr keys in LooseHeaders type hints. #3976
Fixed race conditions in _resolve_host caching and throttling when tracing is enabled. #4013
For URLs like “unix://localhost/…” set Host HTTP header to “localhost” instead of “localhost:None”. #4039
Improved Documentation
Modify documentation for Background Tasks to remove deprecated usage of event loop. #3526
use if __name__ == '__main__': in server examples. #3775
Update documentation reference to the default access logger. #3783
Improve documentation for web.BaseRequest.path and web.BaseRequest.raw_path. #3791
Removed deprecation warning in tracing example docs #3964
3.5.4 (2019-01-12)
Bugfixes
Fix stream .read() / .readany() / .iter_any() which used to return a partial content only in case of compressed content #3525
3.5.3 (2019-01-10)
Bugfixes
Fix type stubs for aiohttp.web.run_app(access_log=True) and fix edge case of access_log=True and the event loop being in debug mode. #3504
Fix aiohttp.ClientTimeout type annotations to accept None for fields #3511
Send custom per-request cookies even if session jar is empty #3515
Restore Linux binary wheels publishing on PyPI
3.5.2 (2019-01-08)
Features
Bugfixes
Preserve MultipartWriter parts headers on write. Refactor the way how Payload.headers are handled. Payload instances now always have headers and Content-Type defined. Fix Payload Content-Disposition header reset after initial creation. #3035
Log suppressed exceptions in GunicornWebWorker. #3464
Remove wildcard imports. #3468
Use the same task for app initialization and web server handling in gunicorn workers. It allows to use Python3.7 context vars smoothly. #3471
Fix handling of chunked+gzipped response when first chunk does not give uncompressed data #3477
Replace collections.MutableMapping with collections.abc.MutableMapping to avoid a deprecation warning. #3480
Payload.size type annotation changed from Optional[float] to Optional[int]. #3484
Ignore done tasks when cancels pending activities on web.run_app finalization. #3497
Improved Documentation
Add documentation for aiohttp.web.HTTPException. #3490
Misc
3.5.1 (2018-12-24)
Fix a regression about ClientSession._requote_redirect_url modification in debug mode.
3.5.0 (2018-12-22)
Features
The library type annotations are checked in strict mode now.
Add support for setting cookies for individual request (#2387)
Application.add_domain implementation (#2809)
The default app in the request returned by test_utils.make_mocked_request can now have objects assigned to it and retrieved using the [] operator. (#3174)
Make request.url accessible when transport is closed. (#3177)
Add zlib_executor_size argument to Response constructor to allow compression to run in a background executor to avoid blocking the main thread and potentially triggering health check failures. (#3205)
Enable users to set ClientTimeout in aiohttp.request (#3213)
Don’t raise a warning if NETRC environment variable is not set and ~/.netrc file doesn’t exist. (#3267)
Add default logging handler to web.run_app If the Application.debug` flag is set and the default logger aiohttp.access is used, access logs will now be output using a stderr StreamHandler if no handlers are attached. Furthermore, if the default logger has no log level set, the log level will be set to DEBUG. (#3324)
Add method argument to session.ws_connect(). Sometimes server API requires a different HTTP method for WebSocket connection establishment. For example, Docker exec needs POST. (#3378)
Create a task per request handling. (#3406)
Bugfixes
Enable passing access_log_class via handler_args (#3158)
Return empty bytes with end-of-chunk marker in empty stream reader. (#3186)
Accept CIMultiDictProxy instances for headers argument in web.Response constructor. (#3207)
Don’t uppercase HTTP method in parser (#3233)
Make method match regexp RFC-7230 compliant (#3235)
Add app.pre_frozen state to properly handle startup signals in sub-applications. (#3237)
Enhanced parsing and validation of helpers.BasicAuth.decode. (#3239)
Change imports from collections module in preparation for 3.8. (#3258)
Ensure Host header is added first to ClientRequest to better replicate browser (#3265)
Fix forward compatibility with Python 3.8: importing ABCs directly from the collections module will not be supported anymore. (#3273)
Keep the query string by normalize_path_middleware. (#3278)
Fix missing parameter raise_for_status for aiohttp.request() (#3290)
Bracket IPv6 addresses in the HOST header (#3304)
Fix default message for server ping and pong frames. (#3308)
Fix tests/test_connector.py typo and tests/autobahn/server.py duplicate loop def. (#3337)
Fix false-negative indicator end_of_HTTP_chunk in StreamReader.readchunk function (#3361)
Release HTTP response before raising status exception (#3364)
Fix task cancellation when sendfile() syscall is used by static file handling. (#3383)
Fix stack trace for asyncio.TimeoutError which was not logged, when it is caught in the handler. (#3414)
Improved Documentation
Deprecations and Removals
Deprecate modification of session.requote_redirect_url (#2278)
Deprecate stream.unread_data() (#3260)
Deprecated use of boolean in resp.enable_compression() (#3318)
Encourage creation of aiohttp public objects inside a coroutine (#3331)
Drop dead Connection.detach() and Connection.writer. Both methods were broken for more than 2 years. (#3358)
Deprecate app.loop, request.loop, client.loop and connector.loop properties. (#3374)
Deprecate explicit debug argument. Use asyncio debug mode instead. (#3381)
Deprecate body parameter in HTTPException (and derived classes) constructor. (#3385)
Deprecate bare connector close, use async with connector: and await connector.close() instead. (#3417)
Deprecate obsolete read_timeout and conn_timeout in ClientSession constructor. (#3438)
Misc
#3341, #3351
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for aiohttp-3.7.0b0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ec2fd30107fca91e748fb5b24d66246a3b0e223d11fa1a1fca17570491722294 |
|
MD5 | 9b4bb076eb439973000375d97bdeef72 |
|
BLAKE2b-256 | bfc37189b07c4517b89ebed1de340d94690939a7cc6cc9cbb1e6b6acb4a6653e |
Hashes for aiohttp-3.7.0b0-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d6a2532fc6dfc6cb29df0eaeb2801e835fd1b206fb3f44210553601d53c6129c |
|
MD5 | 4e307a381464d7f5bb566f0819cd5d5f |
|
BLAKE2b-256 | 00f2cd77d9fd988e24e6267df7bb44b9e4173aaaa3cc755a2aa79083c3932521 |
Hashes for aiohttp-3.7.0b0-cp39-cp39-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df9c1791c04150086b156e83edf057738be594c07d5eb90074135f8634df27e2 |
|
MD5 | e28baa08d47b2f8e4d95f86192375efe |
|
BLAKE2b-256 | 860046c622329e835432c2fda4e8331ff9bde4ce3ad44bef821fff67973960ce |
Hashes for aiohttp-3.7.0b0-cp39-cp39-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0845dfa45406e586e8c937eeb23ba1d1dadd4d8ab0503a56f7228c85233f525 |
|
MD5 | c9f228bd4317d5decb9bf7568c6a991a |
|
BLAKE2b-256 | b17a6ae3683a17622a5e0b5d16d078383b484301346bac646a5aef3e5593b2ca |
Hashes for aiohttp-3.7.0b0-cp39-cp39-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 583c562501afa907889808d9426d98bdfd311efd4a2e75d6e189e592f749367d |
|
MD5 | 68dc041f50322bc06b95fbf8fd7c0b18 |
|
BLAKE2b-256 | 67447ac29898fb679102d0347a56161ee8b1cdf601f52951d2dceb17bd74af24 |
Hashes for aiohttp-3.7.0b0-cp39-cp39-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e18ef8439d5bfde171da6a698b67122a97f0ad89804acd91fd68aff0398e0f3e |
|
MD5 | fa7d20c487987411a028a18d7ae6438d |
|
BLAKE2b-256 | 230cf776ebecac2f42ce899881020e57a3df7585a0127a4d0e38faad07611d4f |
Hashes for aiohttp-3.7.0b0-cp39-cp39-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d58c9114ce5bfbed8356d268ee4714b2bd29863e149f2c8dfdd004bdad0de84 |
|
MD5 | 86d78e598caf1d5c33ad00f7bedd6218 |
|
BLAKE2b-256 | c87fe96c6229167c7d14bebf748873e44fee76f1722be4a9c99a81cd84c28827 |
Hashes for aiohttp-3.7.0b0-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e683f2d8519a9f0a9f8ec99720df0080a855dfd64fc623b5ad43c88025f566b |
|
MD5 | ecf3bfc6b6d8dd2cd90fd79fc6353238 |
|
BLAKE2b-256 | 4dc342c25a3f6a07783e63799c1132e4396ee75336670315e3949294d712a808 |
Hashes for aiohttp-3.7.0b0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36f50fc384f3186902e7003eb65bb83ae537bb3b762e52b957fc88d8c1b05277 |
|
MD5 | cc355b57b554d5c0510e0d669801c2c1 |
|
BLAKE2b-256 | e9b72dd314ac5fd956da9b22739683d1a0ab924238b36de30f4dc77d21a085f4 |
Hashes for aiohttp-3.7.0b0-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2086d2acacfcee5f6268f3cf0e9b7219b9bea7e2db89d45f4eead43260454970 |
|
MD5 | 5ca564093766e7b284da8b835ad68dd3 |
|
BLAKE2b-256 | 76dab1aa42eaeb2d689bdbfc8b2cb6fe2dfe0fd3c11c4b3e5460ae466b60fadd |
Hashes for aiohttp-3.7.0b0-cp38-cp38-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd690fbb1361c0e4b1ef25ef2a99b25e8a099589aa916fb8a1c4070ec6feb5b3 |
|
MD5 | b8898c624b2aaefdb132181b25df0f61 |
|
BLAKE2b-256 | 705ae11b673cf55b8ca447d57a55bec319f9b07d206c79a69dd930a1fe5b380f |
Hashes for aiohttp-3.7.0b0-cp38-cp38-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b10668b8436325523fa2920b9149639e5c1393f8e389de63c20c5c489929e1d4 |
|
MD5 | 5e8ae1ae427c617bf7cd7bd705d62e16 |
|
BLAKE2b-256 | b05721a40a71194dde8e508b06c886d06162e8a1d3318b991573f5b69ef26284 |
Hashes for aiohttp-3.7.0b0-cp38-cp38-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8b771cea344ab0b096b03d2e7ffb70db8d3886fe239fd840860aedcf7669987 |
|
MD5 | 3ba8c3cef7dd67320b3eeba5d16108c8 |
|
BLAKE2b-256 | 6fb2f941ef601c25ed0f56b8914e6283472af70915b3003297895a8761ea2447 |
Hashes for aiohttp-3.7.0b0-cp38-cp38-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4493887db043079c636783f1083eb636c81f90a55f0ddcc48b563433a6355a8e |
|
MD5 | 94f7a96c116b17bb9cb9f366924cab02 |
|
BLAKE2b-256 | 845843f777fca915db79c15a97c8eb329beaa853915beaa074921262f06d3e09 |
Hashes for aiohttp-3.7.0b0-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b59f8add1537021b610884693fdc5899feaab28f07ccca1101dee4bf5619ec54 |
|
MD5 | 267264d858b4a1272aa4a488fbe4b473 |
|
BLAKE2b-256 | 37c9cf7428e12b8dda7036b6c6178d9992e048df6249546d1c528f1dbc4a99db |
Hashes for aiohttp-3.7.0b0-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79391f8b8f3b727a8c267e249f1a6a0e0ec049e19598380e1822a7bda6c31773 |
|
MD5 | d6d78302ab84688bf5f2a25258e4cfa9 |
|
BLAKE2b-256 | d00f55b42ebefd70008d9b1b002b15429e44b0361010b2bab1783e5f940e960c |
Hashes for aiohttp-3.7.0b0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee192bb6ed71dc97416aac89a1b01e31b651ca9cff29b74a599405eb8a3d0b67 |
|
MD5 | e08975848d1e36b5318e545e03055682 |
|
BLAKE2b-256 | 7056dc13e7efbf7f38b1bac8af8d14f4e22463dd3967a97c15da8c9d6c9aeae7 |
Hashes for aiohttp-3.7.0b0-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 934293b4557f748863a9a20c8acae5fec1efd025acd1424b9b5855ae8b5ecbc5 |
|
MD5 | de1972bda1ffa955e85b301ca8b89c45 |
|
BLAKE2b-256 | d7050e9318a6f650d9700c3f678a6da4ff707d8e2e3e4a797fefb4567f8fed0f |
Hashes for aiohttp-3.7.0b0-cp37-cp37m-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b1016752e77d0c607c3b4a87e5fa62940b5c3208325d7871aac7c3263dd3c2c |
|
MD5 | 2786b2e593ac6418bfa83c96a1c72703 |
|
BLAKE2b-256 | e8f462fac35773100263ab374d5944f78bb3542dedc30b5ba9ef029e2416f1b6 |
Hashes for aiohttp-3.7.0b0-cp37-cp37m-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b0452d2f6dd4e4371d6a6d8b67292c2165b11ba227a2261bd8af77f31aa7ff5 |
|
MD5 | 25cf2f031f86e185fd68cb6a836968dd |
|
BLAKE2b-256 | 72c5f5beb36d6c9dd086b47e79bb82ca7c44a1845c435cf4f1977eefdd847c30 |
Hashes for aiohttp-3.7.0b0-cp37-cp37m-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e64ec6cc74234b26feefe0b75413612acb3c87d97bf6db28f02729b67d91bd20 |
|
MD5 | 3952bb3b5f4e9ef23049e137a2e36c86 |
|
BLAKE2b-256 | f1df1f5e2439cddb697855b8f31d40a29605b65f3e53f35a9c3d53fb8438251f |
Hashes for aiohttp-3.7.0b0-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ae064be51d6be1764fbe433c12fc0fcd5495772a32621ec785dd70f82dffd804 |
|
MD5 | b2007fe06a10eac26c622cab29a16de5 |
|
BLAKE2b-256 | 6533e15e06409670ecd65a4c65041229fd31d6f0559d2b8bd9833f5ba307dcfd |
Hashes for aiohttp-3.7.0b0-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f5db432fadba7e8c0f594e6484eba0d9df5d0f1a15bbaf984ff5bf7eb0fcbac1 |
|
MD5 | 461932ebf6929c8a468334885e1dfc47 |
|
BLAKE2b-256 | 3308f48ef7620fde5044511363d919be69a3a71e62e0375e45bdb3f177caf896 |
Hashes for aiohttp-3.7.0b0-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | baa454d5eb16fee5174f1c5e83e100fe2a12278c6694f18bcaaa83b7be389c29 |
|
MD5 | e243c11e84090c109884d8d30ea0386b |
|
BLAKE2b-256 | ad662234ef4afb029645dfe41686ab56b610567a4342065194e0fdd322402317 |
Hashes for aiohttp-3.7.0b0-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d869a3922ebbe3c065b441497623bdc42c68c1cdb2daab0cd207c670fb8ebab |
|
MD5 | f1893d496e56ed9ec24b76756612ce1f |
|
BLAKE2b-256 | 4e85a4f74b7e1e4548fef4274e1397046fddc29573a49d0b736e703b2c242611 |
Hashes for aiohttp-3.7.0b0-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3639af67c4ca1deb65cde243220d79a5e398df76046be3ec75f88f5f23c61bf |
|
MD5 | fe7c1b5cc158632c54b19551acf879ba |
|
BLAKE2b-256 | 4cb29c43762fd0e4e2bc53b346bd37cc45c897383ebacc6066f4165fa664e1e8 |
Hashes for aiohttp-3.7.0b0-cp36-cp36m-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 357a11151ee030a9cb5f60e5004c6ebf9870e31c34afd76d8b8a3ec8a767dc4a |
|
MD5 | 6c4eea219a6f5895e720799c38a404fa |
|
BLAKE2b-256 | 552e9a6d69ad2f3e31ac10491e20387ce76c39b4badd82be1fb691c2672e0d23 |
Hashes for aiohttp-3.7.0b0-cp36-cp36m-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a83c6baa62f66ee446ce2b114936454e2cbbb497184d8620adb722f0cd47785d |
|
MD5 | ee220d382ce084089f70da069171acdb |
|
BLAKE2b-256 | 1ce6d949016ffe319fb57f130b526e8666550e1456ae14563f61e965266e2f5b |
Hashes for aiohttp-3.7.0b0-cp36-cp36m-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 344e8a70c051275b35a6dfc6543291131f6de209db393b6bcc04af6ee9f1a08e |
|
MD5 | 6228bbfd641a7f4d69843f27b85af2bc |
|
BLAKE2b-256 | b745faeba44c271f1b73df91b955ca4bf2aaf77a132de5410ff172f5222a1969 |
Hashes for aiohttp-3.7.0b0-cp36-cp36m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06347ce29ee44683258167ec609b513de0fe46fc75cc0f7af0b807359288f11e |
|
MD5 | 22311128efffd8cfc9eb0a2081dcb4f0 |
|
BLAKE2b-256 | 62b5d779d57455327647233d10d9a76ad53bc414ece8081e699b998e73599d1b |
Hashes for aiohttp-3.7.0b0-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a9c227a71d550ed365470f9b2422f3f98c8400c8d16879f42f4fd198228fa53 |
|
MD5 | 24167c154f9dc1e6c4ff7b469e15de52 |
|
BLAKE2b-256 | 0a406bd1d2c3656c7e028664904c15d5c4bbc221ca81875db747082515e39314 |
Hashes for aiohttp-3.7.0b0-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39ecff7bb4d059dca40a9c486c70c3571b32db67a232942b1fbabf9850e895dc |
|
MD5 | 3781e52edc7c91df60d4521ee982344c |
|
BLAKE2b-256 | 5029004d3f556441cec37127e542c05e565c9758d1bc82973b08e968c8dbd715 |