Thread View: de.comp.lang.python
7 messages
7 total messages
Started by Hermann Riemann
Tue, 25 Oct 2022 19:16
cgi cgitb Ersatz für Python 3.13
Author: Hermann Riemann
Date: Tue, 25 Oct 2022 19:16
Date: Tue, 25 Oct 2022 19:16
13 lines
327 bytes
327 bytes
In https://docs.python.org/3.11/whatsnew/3.11.html steht unter PEP 594 led to the deprecations of the following modules slated for removal in Python 3.13: cgi und cgitb Ich benutze die beiden Funktionen meist um Daten, die in html zwischen <form> und </form> eingegeben werden, auszuwerten. Auf was müsste ich umstellen?
Re: cgi cgitb Ersatz für Python 3.13
Author: Thomas Hochstein
Date: Tue, 25 Oct 2022 20:05
Date: Tue, 25 Oct 2022 20:05
67 lines
2225 bytes
2225 bytes
Hermann Riemann schrieb: > In > > https://docs.python.org/3.11/whatsnew/3.11.html > > steht unter > PEP 594 led to the deprecations of the following modules slated for > removal in Python 3.13: > > cgi und cgitb > > Ich benutze die beiden Funktionen meist um Daten, die in html > zwischen <form> und </form> eingegeben werden, auszuwerten. > > Auf was müsste ich umstellen? Im "PEP 594" stehen die Gründe für die vorgesehene Entfernung der dort genannten Module und vorgeschlagene Ersatzlösungen. Für cgi und cgitb gibt es keinen unmittelbaren Ersatz. Vielmehr heißt es dazu: [1] | cgi | | The cgi module is a support module for Common Gateway Interface (CGI) | scripts. CGI is deemed as inefficient because every incoming request is | handled in a new process. PEP 206 considers the module as: | | "[…] designed poorly and are now near-impossible to fix (cgi) […]" Das ist der Grund für die vorgesehene Entfernung. | Replacements for the various parts of cgi which are not directly related | to executing code are: | | * parse with urllib.parse.parse_qs (parse is just a wrapper) | * parse_header with email.message.Message (see example below) | * parse_multipart with email.message.Message (same MIME RFCs) | * FieldStorage/MiniFieldStorage has no direct replacement, but can | * typically be replaced by using multipart (for POST and PUT requests) | or urllib.parse.parse_qsl (for GET and HEAD requests) | * valid_boundary (undocumented) with re.compile("^[ -~]{0,200}[!-~]$") | | As an explicit example of how close parse_header and | email.message.Message are: | | >>> from cgi import parse_header | >>> from email.message import Message | >>> parse_header(h) | ('application/json', {'charset': 'utf8'}) | >>> m = Message() | >>> m['content-type'] = h | >>> m.get_params() | [('application/json', ''), ('charset', 'utf8')] | >>> m.get_param('charset') | 'utf8' | |cgitb | | The cgitb module is a helper for the cgi module for configurable | tracebacks. | | The cgitb module is not used by any major Python web framework (Django, | Pyramid, Plone, Flask, CherryPy, or Bottle). Only Paste uses it in an | optional debugging middleware. -thh [1] Webseiten vorlesen ist irgendwie doof.
Re: cgi cgitb Ersatz für Python 3.13
Author: "Peter J. Holzer
Date: Tue, 25 Oct 2022 22:56
Date: Tue, 25 Oct 2022 22:56
79 lines
3183 bytes
3183 bytes
On 2022-10-25 18:05, Thomas Hochstein <thh@thh.name> wrote: > Hermann Riemann schrieb: >> In >> >> https://docs.python.org/3.11/whatsnew/3.11.html >> >> steht unter >> PEP 594 led to the deprecations of the following modules slated for >> removal in Python 3.13: >> >> cgi und cgitb >> >> Ich benutze die beiden Funktionen meist um Daten, die in html >> zwischen <form> und </form> eingegeben werden, auszuwerten. >> >> Auf was müsste ich umstellen? > > Im "PEP 594" stehen die Gründe für die vorgesehene Entfernung der dort > genannten Module und vorgeschlagene Ersatzlösungen. Für cgi und cgitb gibt > es keinen unmittelbaren Ersatz. Vielmehr heißt es dazu: [1] > >| cgi >| >| The cgi module is a support module for Common Gateway Interface (CGI) >| scripts. CGI is deemed as inefficient because every incoming request is >| handled in a new process. Bei diesem Argument muss ich immer schmunzeln. Wie lange dauert ein fork() und exec() unter Linux? Gut, wenn man einen Interpreter wie Python verwendet und dann noch ein paar Module lädt (cgi, psycopg2, ...) ist man bald bei 100 oder 200 Millisekunden. Aber ich habe schon Java-CMS gesehen, die länger für eine Seite gebraucht haben - und die haben für *jede* Seite so lang gebraucht, nicht nur für das Resultat eines POST-Requests. Bei den meisten Websites ist vollkommen egal, ob ein Webformular in 10, 100 oder 1000 Millisekunden verarbeitet wird. >| The cgitb module is not used by any major Python web framework (Django, >| Pyramid, Plone, Flask, CherryPy, or Bottle). Da sind die praktikablen Ersatzmöglichkeiten versteckt. "Major Python web framework" klingt erst mal etwas abschreckend, aber erstens bezieht sich das "major" wohl eher auf die Verbreitung als die Größe und zweitens muss man ja nicht gleich den ganzen Funktionsumfang nützen. Von den genannten habe ich Django und Flask genützt und außerdem FastAPI. Django[1] kann (fast) alles (Request Routing, Parameter Parsing, Form Handling, Datenbankzugriffe via ORM, Templates, ...), ist aber ziemlich "opinionated". Wenn man es so verwendet, wie die Django-Macher es sich vorstellen, funktioniert es gut. Wenn man davon abweichen will oder muss (in unserem Fall: Weil das Datenmodell vorgegeben und, äh, etwas speziell war), wird es schmerzhaft. Außerdem hat man einiges zu lernen. Flask[2] ist hübsch minimalistisch. Tut out of the box nicht viel mehr als Request Routing und Parameter Parsing, und das hat man schnell gelernt. Bei Bedarf gibt es alle möglichen Extensions. Wäre meine Empfehlung für jemanden, der eine Handvoll CGI-Scripts ablösen will. FastAPI[3] ist wie der Name sagt, eher auf APIs zugeschnitten (insbesondere solche, die JSON konsumieren und produzieren). Kann natürlich auch für beliebige Web-Applikationen verwendet werden, aber man merkt, dass das nicht der intendierte Einsatzzweck ist. Und für Leute, die nicht gerne JavaScript fürs Frontend schreiben aber auf eine gewisse Mikro-Interaktivität nicht verzichten wollen, möchte ich noch kurz Werbung für HTMX[4] machen. hp [1] https://www.djangoproject.com/ [2] https://flask.palletsprojects.com/en/2.2.x/ [3] https://fastapi.tiangolo.com/ [4] https://htmx.org/
[Python-de] Re: cgi cgitb Ersatz für Python 3.13
Author: Hartmut Goebel
Date: Wed, 26 Oct 2022 09:22
Date: Wed, 26 Oct 2022 09:22
23 lines
1799 bytes
1799 bytes
SGFsbG8sDQoNCkFtIDI1LjEwLjIyIHVtIDIwOjA1IHNjaHJpZWIgVGhvbWFzIEhvY2hzdGVpbjoN Cj4gfCBjZ2kNCj4gfA0KPiB8IFRoZSBjZ2kgbW9kdWxlIGlzIGEgc3VwcG9ydCBtb2R1bGUgZm9y IENvbW1vbiBHYXRld2F5IEludGVyZmFjZSAoQ0dJKQ0KPiB8IHNjcmlwdHMuIENHSSBpcyBkZWVt ZWQgYXMgaW5lZmZpY2llbnQgYmVjYXVzZSBldmVyeSBpbmNvbWluZyByZXF1ZXN0IGlzDQo+IHwg aGFuZGxlZCBpbiBhIG5ldyBwcm9jZXNzLiBQRVAgMjA2IGNvbnNpZGVycyB0aGUgbW9kdWxlIGFz Og0KPiB8DQo+IHwgICAgIlvigKZdIGRlc2lnbmVkIHBvb3JseSBhbmQgYXJlIG5vdyBuZWFyLWlt cG9zc2libGUgdG8gZml4IChjZ2kpIFvigKZdIg0KPg0KPiBEYXMgaXN0IGRlciBHcnVuZCBmw7xy IGRpZSB2b3JnZXNlaGVuZSBFbnRmZXJudW5nLg0KDQpBdWNoIHdlbm4gZGllc2UgTUwgZGVyIGZh bHNjaGUgRmxlY2sgaXN0LCB1bSBkYXMgenUgZGlza3V0aWVyZW46DQoNCkRhcyBBcmd1bWVudCBm aW5kZSBpY2ggemllbWxpY2ggc2Nod2FjaGVuLCBkZW5uIGVzIGdpYnQgZ2Vuw7xnZW5kIA0KQW53 ZW5kdW5nc2bDpGxsZSwgYmVpIGRlbmVuIENHSSB2w7ZsbGlnIGF1c3JlaWNoZW5kIGlzdC4gQmVp c3BpZWxzd2Vpc2UgDQp3ZW5uIG1hbiBlaW5lIFdlYnNpdGUgYmV0cmVpYnQsIGJlaSBkZXIgNS1t bCBpbSBKYWhyIGplbWFuZCBkYXMgDQpLb250YWt0Zm9ybXVsYXIgYmVudXR6dC4NCg0KKERhcyBG b3JtdWxhciBmw7xyIG1laW5lbiBkZWNvbXB5bGUtU2VydmljZSB3YXIgZWJlbmZhbGxzIGluIENH SSANCmltcGxlbWVudGllcnQuIEbDvHIgZGllIHBhYXIgQW5mcmFnZW4gaW0gSmFociB2w7ZsbGln IGF1c3JlaWNoZW5kLikNCg0KLS0gDQpTY2jDtm5lbiBHcnXDnw0KSGFydG11dCBHb2ViZWwNCkRp cGwuLUluZm9ybWF0aWtlciAodW5pdiksIENJU1NQLCBDU1NMUCwgSVNPIDI3MDAxIExlYWQgSW1w bGVtZW50ZXINCkluZm9ybWF0aW9uIFNlY3VyaXR5IE1hbmFnZW1lbnQsIFNlY3VyaXR5IEdvdmVy bmFuY2UsIFNlY3VyZSBTb2Z0d2FyZSANCkRldmVsb3BtZW50DQoNCkdvZWJlbCBDb25zdWx0LCBM YW5kc2h1dA0KaHR0cDovL3d3dy5nb2ViZWwtY29uc3VsdC5kZQ0KDQpCbG9nOiANCmh0dHBzOi8v d3d3LmdvZS1jb24uZGUvYmxvZy9zdGV1ZXJiZWhvZXJkZW4tdG9ycGV0aWVyZW4tZnJlaWUtc29m dHdhcmUNCktvbHVtbmU6IA0KaHR0cHM6Ly93d3cuZ29lLWNvbi5kZS9oYXJ0bXV0LWdvZWJlbC9j aXNzcC1nZWZsdWVzdGVyLzIwMTItMDEtaW4tZGllLWNsb3VkLWluLWRpZS1jbG91ZC1hYmVyLXdv LXNvbGwtZGllLXNlaW4gDQoNCg==
Re: [Python-de] Re: cgi cgitb Ersatz für Python 3.13
Author: Thomas Orgelmach
Date: Sat, 29 Oct 2022 22:20
Date: Sat, 29 Oct 2022 22:20
20 lines
774 bytes
774 bytes
Am 26.10.22 um 09:22 schrieb Hartmut Goebel: > > Das Argument finde ich ziemlich schwachen, denn es gibt genügend > Anwendungsfälle, bei denen CGI völlig ausreichend ist. Beispielsweise wenn man > eine Website betreibt, bei der 5-ml im Jahr jemand das Kontaktformular benutzt. Und für die paar Leute mit diesem Use-Case möchte man das eben nicht weiter supporten. Ich verstehe das schon. Nebenbei: das Parsen eines Formulars, das per CGI 'reinkommt, ist auch ziemlich fix herunter getippt. Gruß, Thomas -- I have seen things you lusers would not believe. I've seen Sun monitors on fire off the side of the multimedia lab. I've seen NTU lights glitter in the dark near the Mail Gate. All these things will be lost in time, like the root partition last week.
[Python-de] Re: cgi cgitb Ersatz für Python 3.13
Author: "Massa, Harald A
Date: Sat, 29 Oct 2022 22:45
Date: Sat, 29 Oct 2022 22:45
44 lines
3408 bytes
3408 bytes
UEVQIDIwNiBjb25zaWRlcnMgdGhlIG1vZHVsZSBhczoNCj4gfA0KPiB8ICAgICJb4oCmXSBkZXNp Z25lZCBwb29ybHkgYW5kIGFyZSBub3cgbmVhci1pbXBvc3NpYmxlIHRvIGZpeCAoY2dpKSBb4oCm XSINCg0KaGFiZSBncmFkZSBtYWwgaW4gZGVuIFF1ZWxsY29kZSBnZXNjaGF1dCwgaGllciB6dW0g S2xpY2tlbjoNCg0KaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2Jsb2IvMy4xMS9M aWIvY2dpdGIucHkNCg0KaW4gZGVuIDMzMiBaZWlsZW4gZGVzIE1vZHVsZXMgc2luZCBkaXZlcnNl IFZvcmdlaGVuc3dlaXNlbiwgZGllDQrDvGJsaWNoZXJ3ZWlzZSBhbHMNCiJzbyBiaXR0ZSBuaWNo dCIgYmVzY2hyZWliZW4gd2VyZGVuLg0KDQpXRU5OIGRhcyBQcm9qZWt0IGRhcmF1ZiBhdWZiYXV0 IC4uLiBkYW5uIGluIFB5dGhvbiAzLjEzZmYgZWluZmFjaCBkYXMgTW9kdWwNCmF1cyAzLjExIGlu cyBQcm9qZWt0dmVyemVpY2huaXMga29waWVyZW4uIFVuZCBhYiBkYW5uIGlzdCBlYmVuIGRlcg0K UHJvamVrdG93bmVyIGbDvHIgZGFzIEZpeGVuIHZlcmFudHdvcnRsaWNoLg0KDQpHcnXDnw0KDQpI YXJhbGQNCg0KDQoNCg0KT24gV2VkLCAyNiBPY3QgMjAyMiBhdCAwOToyMiwgSGFydG11dCBHb2Vi ZWwgPGguZ29lYmVsQGdvZWJlbC1jb25zdWx0LmRlPg0Kd3JvdGU6DQoNCj4gSGFsbG8sDQo+DQo+ IEFtIDI1LjEwLjIyIHVtIDIwOjA1IHNjaHJpZWIgVGhvbWFzIEhvY2hzdGVpbjoNCj4gPiB8IGNn aQ0KPiA+IHwNCj4gPiB8IFRoZSBjZ2kgbW9kdWxlIGlzIGEgc3VwcG9ydCBtb2R1bGUgZm9yIENv bW1vbiBHYXRld2F5IEludGVyZmFjZSAoQ0dJKQ0KPiA+IHwgc2NyaXB0cy4gQ0dJIGlzIGRlZW1l ZCBhcyBpbmVmZmljaWVudCBiZWNhdXNlIGV2ZXJ5IGluY29taW5nIHJlcXVlc3QgaXMNCj4gPiB8 IGhhbmRsZWQgaW4gYSBuZXcgcHJvY2Vzcy4gUEVQIDIwNiBjb25zaWRlcnMgdGhlIG1vZHVsZSBh czoNCj4gPiB8DQo+ID4gfCAgICAiW+KApl0gZGVzaWduZWQgcG9vcmx5IGFuZCBhcmUgbm93IG5l YXItaW1wb3NzaWJsZSB0byBmaXggKGNnaSkgW+KApl0iDQo+ID4NCj4gPiBEYXMgaXN0IGRlciBH cnVuZCBmw7xyIGRpZSB2b3JnZXNlaGVuZSBFbnRmZXJudW5nLg0KPg0KPiBBdWNoIHdlbm4gZGll c2UgTUwgZGVyIGZhbHNjaGUgRmxlY2sgaXN0LCB1bSBkYXMgenUgZGlza3V0aWVyZW46DQo+DQo+ IERhcyBBcmd1bWVudCBmaW5kZSBpY2ggemllbWxpY2ggc2Nod2FjaGVuLCBkZW5uIGVzIGdpYnQg Z2Vuw7xnZW5kDQo+IEFud2VuZHVuZ3Nmw6RsbGUsIGJlaSBkZW5lbiBDR0kgdsO2bGxpZyBhdXNy ZWljaGVuZCBpc3QuIEJlaXNwaWVsc3dlaXNlDQo+IHdlbm4gbWFuIGVpbmUgV2Vic2l0ZSBiZXRy ZWlidCwgYmVpIGRlciA1LW1sIGltIEphaHIgamVtYW5kIGRhcw0KPiBLb250YWt0Zm9ybXVsYXIg YmVudXR6dC4NCj4NCj4gKERhcyBGb3JtdWxhciBmw7xyIG1laW5lbiBkZWNvbXB5bGUtU2Vydmlj ZSB3YXIgZWJlbmZhbGxzIGluIENHSQ0KPiBpbXBsZW1lbnRpZXJ0LiBGw7xyIGRpZSBwYWFyIEFu ZnJhZ2VuIGltIEphaHIgdsO2bGxpZyBhdXNyZWljaGVuZC4pDQo+DQo+IC0tDQo+IFNjaMO2bmVu IEdydcOfDQo+IEhhcnRtdXQgR29lYmVsDQo+IERpcGwuLUluZm9ybWF0aWtlciAodW5pdiksIENJ U1NQLCBDU1NMUCwgSVNPIDI3MDAxIExlYWQgSW1wbGVtZW50ZXINCj4gSW5mb3JtYXRpb24gU2Vj dXJpdHkgTWFuYWdlbWVudCwgU2VjdXJpdHkgR292ZXJuYW5jZSwgU2VjdXJlIFNvZnR3YXJlDQo+ IERldmVsb3BtZW50DQo+DQo+IEdvZWJlbCBDb25zdWx0LCBMYW5kc2h1dA0KPiBodHRwOi8vd3d3 LmdvZWJlbC1jb25zdWx0LmRlDQo+DQo+IEJsb2c6DQo+IGh0dHBzOi8vd3d3LmdvZS1jb24uZGUv YmxvZy9zdGV1ZXJiZWhvZXJkZW4tdG9ycGV0aWVyZW4tZnJlaWUtc29mdHdhcmUNCj4gS29sdW1u ZToNCj4NCj4gaHR0cHM6Ly93d3cuZ29lLWNvbi5kZS9oYXJ0bXV0LWdvZWJlbC9jaXNzcC1nZWZs dWVzdGVyLzIwMTItMDEtaW4tZGllLWNsb3VkLWluLWRpZS1jbG91ZC1hYmVyLXdvLXNvbGwtZGll LXNlaW4NCj4NCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18NCj4gcHl0aG9uLWRlIE1haWxpbmdsaXN0ZSAtLSBweXRob24tZGVAcHl0aG9uLm9yZw0KPiBa dXIgQWJtZWxkdW5nIHZvbiBkaWVzZXIgTWFpbGluZ2xpc3RlIHNlbmRlbiBTaWUgZWluZSBOYWNo cmljaHQgYW4NCj4gcHl0aG9uLWRlLWxlYXZlQHB5dGhvbi5vcmcNCj4gaHR0cHM6Ly9tYWlsLnB5 dGhvbi5vcmcvbWFpbG1hbjMvbGlzdHMvcHl0aG9uLWRlLnB5dGhvbi5vcmcvDQo+IE1pdGdsaWVk c2FkcmVzc2U6IGNoZWZAZ2h1bS5kZQ0KPg0KDQoNCi0tIA0KDQpHSFVNIEdtYkgNCkhhcmFsZCBB cm1pbiBNYXNzYQ0KU3BpZWxiZXJnZXIgU3RyYcOfZSA0OQ0KNzA0MzUgU3R1dHRnYXJ0DQowMTcz Lzk0MDk2MDcNCg0KQW10c2dlcmljaHQgU3R1dHRnYXJ0LCBIUkIgNzM0OTcxDQpHRjogSGFyYWxk IEFybWluIE1hc3NhDQo
[Python-de] Re: cgi cgitb Ersatz für Python 3.13
Author: imsoniyasharma01
Date: Sun, 06 Nov 2022 06:27
Date: Sun, 06 Nov 2022 06:27
1 lines
320 bytes
320 bytes
I just couldn't give your site going before telling you that I really participated in the top quality information you present to your visitors? https://www.modelescortsindelhi.com/massage-republic-service.html Will be back again every goliath no mentioning a fundamental entryway to pick what is the deal with new posts
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads