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.0b1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a7cfbc7055e97d7e88f33882416ef072513af6f2040be8ad1f1ee450365a5af |
|
MD5 | 32ec92a0d88c19b1c3f9d776d99e870e |
|
BLAKE2b-256 | 980db129aa878ab76c70fc504fdf5ac1eb8bf2088ed260240c214b5ffa885327 |
Hashes for aiohttp-3.7.0b1-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 62cdee6ddd8f9e1f501f15b6da564d17750bfe77ff44a8b77b2c1f8255023844 |
|
MD5 | 87bff26cb9d0e60f517262185539a461 |
|
BLAKE2b-256 | 6a7b7f98df4fb2e616e844ee52809f137faa76898a639d542f1001b7dfb9e7f6 |
Hashes for aiohttp-3.7.0b1-cp39-cp39-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e4148e4e1a71e80bb1f13ac0e6d21504749659df091db124c144f06d55f6de4 |
|
MD5 | ff7ac66b26a9ce7978c3f03b2e061a92 |
|
BLAKE2b-256 | 58aafc983d42a5c5bcb492f7eeec74fd0bbfef20310480ba5e3b2758f9d1499d |
Hashes for aiohttp-3.7.0b1-cp39-cp39-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e73df51d8586fa5e94f7ae2e5ca0f6f276db4c7bba679b10cb607762f8c6d740 |
|
MD5 | 792c57f9d0e802d69378fbeca9196cf2 |
|
BLAKE2b-256 | 776c4ed7fe15161a141013dd038925187cc9af239524794f76688fd0480e41e3 |
Hashes for aiohttp-3.7.0b1-cp39-cp39-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a40e823c4708b819230da7ca1e886ee2af646df82171b05d32074ef4e8cc347 |
|
MD5 | 75d8152082614c0e3e421673f4271483 |
|
BLAKE2b-256 | 7fc1b39f1160c97577a6bf54d26fa827243737d0f6c16bc1be7c81eb5cf47adf |
Hashes for aiohttp-3.7.0b1-cp39-cp39-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c4b19209e4af3529034c3d5fd3912ca846d25b654d7edf655a6985c5c83f7cbd |
|
MD5 | 735e092d2b6c0dd4e98a74156bf95059 |
|
BLAKE2b-256 | 5ce42db351c98914664ed3621dec228ff75e872f7a3a4a0d10ae1074161da526 |
Hashes for aiohttp-3.7.0b1-cp39-cp39-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ec195cd5bc7ca0485f8908a740ef01098ec1ebc3cc77f8115773731dc053b48 |
|
MD5 | 43d0a38ed440299570ecc7cd4ad5555e |
|
BLAKE2b-256 | 1bf37c60ebf976bf60c02fae28e3a84fa4812030a8bc1aafb1e069763e39f31e |
Hashes for aiohttp-3.7.0b1-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c41fd39999116a4fc2047732aedce7f8342a8fd67f5387434fb693f71c7e9da |
|
MD5 | 424cb527145131e9343456df05304f6f |
|
BLAKE2b-256 | 7c5412feb20b253fa21285f6a4b85016069f837429e4d5237991c8e7067fed7a |
Hashes for aiohttp-3.7.0b1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 88f213d33189098f07a03659350c9e9771c68e67ca493902b93a3dbdc1f267e6 |
|
MD5 | 6c356ab381dfe0480cb1b23dddb26a01 |
|
BLAKE2b-256 | d76a2d763037a34abbabefba9d0cc81bda3b0910a4a8eec960008e402e02fab5 |
Hashes for aiohttp-3.7.0b1-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08f2e1d1faafd097f410ad596b8cf391baedac564d11002ea0c65cc025c56986 |
|
MD5 | 1ed589c56c0f29e93810785ad0af1923 |
|
BLAKE2b-256 | a4adc43c1498306022168b2d49c0928f2842be0ceb7f158110b5abb586fb0ffe |
Hashes for aiohttp-3.7.0b1-cp38-cp38-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8b9580ed29e664901ecb4069028005f163cba47565fb01b2c0257ecf26075f1 |
|
MD5 | 336335480149ae29193e54ec281564fc |
|
BLAKE2b-256 | 229419d6280aa1fffafab38f56864afce4b8564b05862cb7abbc7551b6d7478b |
Hashes for aiohttp-3.7.0b1-cp38-cp38-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e08db7c3f7540fc6a880215a14ccc053396651fcfa6aa7a4775a23cdca760761 |
|
MD5 | 3302ae0af4e9f861086f77d1173fd878 |
|
BLAKE2b-256 | 838253d2cc698e822857f4afee2873f8625a42c72282b98ea8f2a8fa2624cfb4 |
Hashes for aiohttp-3.7.0b1-cp38-cp38-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b1b5ad50fcc7cdfcf1b1a104db77b6d30da5350d7dcacf820c1290b767e1a82d |
|
MD5 | 305e54e6f6baa437f4a6525eca2bdcdc |
|
BLAKE2b-256 | 3b0212cfed825790d864b33082ba9bfb86b476e712fc5dee41f72cc1e4315e04 |
Hashes for aiohttp-3.7.0b1-cp38-cp38-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a55f93977eb464eb46f4b0e437e723a568c0c210834d2ec2eee8b55eed0f4f7 |
|
MD5 | 84988db5e121408881b33a8d9fbf3d79 |
|
BLAKE2b-256 | f683a64ac214d9ae78ae75e53eef73df5ec8e4f93636e110b19fcd81b777f8e3 |
Hashes for aiohttp-3.7.0b1-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7318c89853e9cabbd6d7d3f1534892393f2fc812e45cfc1fc1a1d76105a9b644 |
|
MD5 | 3eb0cb2df4ec65cf0aae421d313bc168 |
|
BLAKE2b-256 | 9ecc6eab59cad9f22a8731c04d013ff81c337c29c1b814a2e3bc2a327d14324b |
Hashes for aiohttp-3.7.0b1-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e903b34d4a52b2fdc7ad909dc530596e31d1b18d1eb4d142508d43a70d91228b |
|
MD5 | da48d6daf0851507a412ba9896454431 |
|
BLAKE2b-256 | 7e6886169d2ecf6662f85faa6e187fc41603046733e777ce3720dbd02ae9812c |
Hashes for aiohttp-3.7.0b1-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1e91d927305a457a0e090c7c90da355106a615fa4191dd288c703bc1c494dd5b |
|
MD5 | 67191f245fdf2946890b0f9d47025cb1 |
|
BLAKE2b-256 | 72e68b74f097fe714bf846d8ecfca8acf49a364b296e11c4da414c8fd008bffb |
Hashes for aiohttp-3.7.0b1-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20a6db07b68b0d0b0da7257e2b89bdcb2bb6fb14bb3a0dd4610c7514ec9d04bf |
|
MD5 | 2de76dbb17b11eac19e75903e2e1c29f |
|
BLAKE2b-256 | cd208496d2538eea74a4dabc3df7a9a1213bd686f32de22b20af6302853e9bc7 |
Hashes for aiohttp-3.7.0b1-cp37-cp37m-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8c476712871d649305a91d3cd878df65ca65fd353ab38d9ce90d5b8ee244511 |
|
MD5 | 289cb30defe8809c80e72e3ac0a8843c |
|
BLAKE2b-256 | fdf4924358c5dfe8e68dbcaa450a8778e56f82c1b55abcb2856f6fc7da6a73ef |
Hashes for aiohttp-3.7.0b1-cp37-cp37m-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab6410413c2ce564c078055b452b16a6f9684a15353cc794687c88093685d8ca |
|
MD5 | 208dd4f99ac18acc0c24e1a833a96873 |
|
BLAKE2b-256 | 665e1f3063c29ea62a98d6050e534e5844886dd7d01c58d1970237b2d2324682 |
Hashes for aiohttp-3.7.0b1-cp37-cp37m-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0dbdbaa7dcbfe6798cd2e0eb2388742c4575fad91609824de2ed76566ecfe49 |
|
MD5 | 99b81cce7ad8881dd9a44cf2d77a6f05 |
|
BLAKE2b-256 | dec188f884a123fad13ed10b8babe2559611b5d4827cc3e8975ba88cd2093caf |
Hashes for aiohttp-3.7.0b1-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a10ec9b8c16d1aa5a2f0c53e17d5c2e5585cde1c4960f70b99050b246d93ced5 |
|
MD5 | 241362749d2eaeb81c25a7db7278ec22 |
|
BLAKE2b-256 | 880084e967bb8e1ecf3e59153eec4dc6cc7e80816391b16b86e918ffa9287b14 |
Hashes for aiohttp-3.7.0b1-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fa072d702770e18272fd01960934649b15b6f7b29d74389a9dd709700a07dfe |
|
MD5 | 2a2c064e1158a40fd58c170b13657f48 |
|
BLAKE2b-256 | e66108ecce18082bd0758f8c07f041fd06d4e5a4117a787d6aa2345e0a4b0dd2 |
Hashes for aiohttp-3.7.0b1-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3595a64030f2bcad9a6e7749e1e0012f65139eece25e5d04defd2be4473829af |
|
MD5 | 9c998d01d819fb66c8f6c934c39866e9 |
|
BLAKE2b-256 | 73e5126242fef55c794a75df50fa075041282b7b962d1f4d936ebd79e4c7d0df |
Hashes for aiohttp-3.7.0b1-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 117dc422f861a6e747124ded7a664ad11f78a49d4d4bbe67119cecb73723fbfd |
|
MD5 | 342a36db2f43114ca16f6a04e8b4f04a |
|
BLAKE2b-256 | 1aaa0b89f3f6503464ce594b5e27bbc1b600845208104888d9ec6809b171f562 |
Hashes for aiohttp-3.7.0b1-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63cc1f4806eda074f502c2210ddd7a8ea82f1aeee19373fed46e03e5ffd99f17 |
|
MD5 | fda984443aba7deefd0e9f126c804d5e |
|
BLAKE2b-256 | 17fab266bc529a5fa6f86346dd643b024455c9cb3427ed27e48fb39fb71cc7e7 |
Hashes for aiohttp-3.7.0b1-cp36-cp36m-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6f4aa339f01f99a2d678b869b102922cc0388840a7025cdb554f0220bd505815 |
|
MD5 | 41d87a1699763a4f9a3b65dac5d3792a |
|
BLAKE2b-256 | 8a855a2344dafde41ec13fce3e57d0e01659030efb2460d7b3ba09504c830cf7 |
Hashes for aiohttp-3.7.0b1-cp36-cp36m-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e73921b4d95afe18b404aabef7a2116c68188980d1688673688765af05fb7c47 |
|
MD5 | cd2ea2d7d4a07bd1d9d5efe9ee43b781 |
|
BLAKE2b-256 | 5ca3fd3673bc5fcea686c43b51de2a428593c5b69d0e24914df1f5fa16ad9f69 |
Hashes for aiohttp-3.7.0b1-cp36-cp36m-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b62512b7349efeb89705d201f84293fb83f683ac47d627b89959a63c64d6a130 |
|
MD5 | a2362009e693b87bf5b9f106839b9029 |
|
BLAKE2b-256 | c5943155c23d1e05ae9b019d4c6de746cf421c49dfbc491c15b5841c474af2cc |
Hashes for aiohttp-3.7.0b1-cp36-cp36m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64d124c4c013482484c1e014f3cb08bd5bb2da7fbccff8341958443aa59923c1 |
|
MD5 | 63db7dfd9bf6f28749decc463fd447e0 |
|
BLAKE2b-256 | d98248da99ec44c8be733b3a72382d7bd5dc93a30e3b6de478a0ca0c0a395bb3 |
Hashes for aiohttp-3.7.0b1-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 715db30134bca3702fa331bf2dae7fc132c3ae63870a78e89bacd10a3f450c57 |
|
MD5 | e38acb1913a01578c6842adbf6088d04 |
|
BLAKE2b-256 | a99bd7753555dfff8763e5f6e6690c5d6f1d356509cbea0dee6f9494d32d1c88 |
Hashes for aiohttp-3.7.0b1-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cf32b18ad0d821be80b5d5705afd4f259fa47b4e879eec62393cbe3b50b50cac |
|
MD5 | a114873ae2bb75e3ae63f41c07841292 |
|
BLAKE2b-256 | c7e8aa0c7f418d24cf9459ae734af56b5a51f9e9d07cead001b23565168d1015 |