Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #5082

Re: [Python-de] select.epoll() vs async framework (PostgreSQL)

From Stefan Behnel <python-de@behnel.de>
Newsgroups de.comp.lang.python
Subject Re: [Python-de] select.epoll() vs async framework (PostgreSQL)
Date 2018-01-17 22:49 +0100
Message-ID <mailman.113.1516225955.2620.python-de@python.org> (permalink)
References (3 earlier) <2915505E-9237-40C4-A2BF-A4A22D00A216@web.de> <04ab7b73-e182-081c-74c7-976e3eac9b84@mail.de> <d1a40b67-1a37-7164-f980-85d473a0838e@behnel.de> <9ce770aa-b6dd-f709-1a95-f1e02f82f7f6@mail.de> <bc8618a5-2ffc-46eb-72a4-afa12ddc030d@behnel.de>

Show all headers | View raw


Sven R. Kunze schrieb am 17.01.2018 um 19:36:
> On 16.01.2018 19:55, Stefan Behnel wrote:
>> Sven R. Kunze schrieb am 15.01.2018 um 20:55:
>>> Sockets sind meiner Meinung nach ein viel besseres Abstraktionsniveau als
>>> meinen Quellcode überall mit diesem dämlichen async und await zu spicken.
>>
>> Ich verstehe nicht, warum das ein Argument dafür sein sollte, sich seinen
>> eigenen I/O-Loop zu schreiben.
> 
> Weil, wie du an anderen Antworten hier im Thread und auch an verlinkten
> Resourcen merkst, dies ein riesengroßes Problem darstellt.
> 
> Da verstehe ich nicht, warum nicht proaktiv auf dieses Problem eingegangen
> wird. Kein normaler Programmierer will alle seine Bibliotheken auf eine
> zweite Programmiersprache umschreiben. Das ist das Zwei-Welten-Problem bei
> asyncio.

Und anstatt meinen Code speziell für asyncio zu schreiben, ist es dann
besser, ihn speziell für select() zu schreiben? Der "Vorteil" erschließt
sich mir absolut nicht. Bei asyncio brauche ich den meisten Code *gar
nicht* zu schreiben, weil es für fast alles schon fertige Tools und
Bibliotheken gibt, die ich dank der allgemeinen Schnittstelle einfach
ineinander stöpseln kann.

Bei einem blanken select() (oder epoll() usw.) fange ich dagegen komplett
bei Null an, weil ich damit faktisch auf der Socket-Ebene festhänge, also
ganz, ganz unten. Dann brauche ich erst einmal Tools, die inkrementell auf
Sockets lesen und schreiben können, und die muss ich dann auch noch mühsam
orchestrieren. Also muss ich genau die (fehleranfällige) Arbeit selbst
machen, die mir ein I/O-Loop fertig (und fertig debuggt) abnimmt. Für
nichts anderes ist doch ein I/O-Loop da.

Wenn dich jemand bittet, eine Webseite zu entwickeln, ist dann dein erster
Schritt, das HTTP-Protokoll zu implementieren?

Ganz ehrlich, die Begriffe "asyncio", "async/await" und "kooperatives
Multitasking" haben zwar durchaus etwas miteinander zu tun, sind aber nicht
gleichbedeutend. Sie sind alle nur (sehr allgemeine) Werkzeuge, mit denen
sich alles Mögliche machen lässt. Deine bisherige Kritik scheint sich an
einer ziemlich schmalen Kombination der drei Begriffe aufzuhängen, die
weder Nutzen noch Anwendungsbereich auch nur annähernd abdeckt.

Stefan

Back to de.comp.lang.python | Previous | Next | Find similar


Thread

Re: [Python-de] select.epoll() vs async framework (PostgreSQL) Stefan Behnel <python-de@behnel.de> - 2018-01-17 22:49 +0100

csiph-web