Re: Making Python Script Exit Completely with One Ctrl+C
Hongyi Zhao via curl-users <[email protected]>
| Newsgroups | gmane.comp.web.curl.general |
|---|---|
| Message-ID | <CAGP6POLS=gWG0_4kUxJ9Yah92j5oOZ+DANbG5wQyf4P2BrtP4Q@mail.gmail.com> |
On Sun, Dec 10, 2023 at 2:44 PM Hongyi Zhao <[email protected]> wrote: > > On Sun, Dec 10, 2023 at 1:47 PM Dan Fandrich via curl-users > <[email protected]> wrote: > > > > On Sun, Dec 10, 2023 at 12:35:16PM +0800, Hongyi Zhao via curl-users wrote: > > > But I still cannot figure out how to achieve the same purpose with the > > > following methods: > > > > > > 1. Using the following method suggested by you: > > > > > > You'll probably have to block SIGINT before calling calling into pycurl, then > > > unblocking in the progress callback to check it, e.g. > > [...] > > > 2. Using a pure try-expect-based method. > > > > What do you mean "pure try-expect-based method"? You mean without touching > > signal masks? > > I mean without importing/relying on the signal module. > > > As long as you're calling non-Python based C libraries, you're > > out of the realm of pure Python. If PyCurl were instead 100% Python, the > > KeyboardInterrupt would be raised as you expect and you could catch it > > normally. But in this case, not only is the interrupt happening while running > > C code, it's happening while running C code from Python while calling back to C > > code that in turn is calling code in Python. Handling that as this code now is > > in pure Python without having to drop to writing a C extension seems pretty > > good to me. > > Do you mean the code implementation I've already posted here based on your tips? > > > The alternative SIGINT handler solution should also work and may > > be more elegant, depending on your point of view. > > I've already used the following code snippet: > > def sigint_handler(signal, frame): > print(f"KeyboardInterrupt at line {frame.f_lineno}") > sys.exit(0) > > signal.signal(signal.SIGINT, sigint_handler) > > > So, I don't understand why you still like the above. I meant to say the following: So, I don't understand why you still said the above words. > > In any case, the issue has turned out to be unrelated to the topic of this > > list, so you're better off finding a PyCurl forum if you prefer another > > solution. > > > > Dan > > Zhao > > > -- > > Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users > > Etiquette: https://curl.se/mail/etiquette.html -- Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users Etiquette: https://curl.se/mail/etiquette.html