Suggestions on mechanism or existing code - maintain persistence of file download history
DL Neil
PythonList at DancesWithMice.info
Sat Feb 1 00:15:47 EST 2020
On 31/01/20 9:53 PM, R.Wieser wrote:
>> Using ctrl+c is a VERY BAD idea.
>
> To have it just exit the program ? Yes, indeed.
>
> Though you /could/ keep track of what needs to be finished and have the
> ctrl-c handler do that for you (barf).
>
> Another posibility is to capture the ctrl-c and set a flag, which than
> instructs the program to terminate loops wherever possible - and thus have
> the program finish as if there was no more to do.
>
>> (see also 'sledgehammer to crack a nut')
>
> While I agree with you there, I've been searching for other ways to detect a
> keypress (in a console-based script) and have found none. IOW, you do not
> (seem to) have another option.
Color me disappointed! I was hoping to be enlightened as to how one
might code exactly that. (so I went looking...)
My first thought was a try...except looking for a keyboard error, but
wouldn't that only work if there was an input() loop? The idea of
putting, effectively the entire code-base, into a try...except block
seemed crude and likely to cause side-effects.
https://stackoverflow.com/questions/1112343/how-do-i-capture-sigint-in-python
put me on a good path. So, I opened a door in my memory, shut my ears to
the intense screeching noise, and used a yard-broom to sweep away all
the rust that flaked off the hinges...
PSL's signal — Set handlers for asynchronous events
(https://docs.python.org/3/library/signal.html) appears to handle
keyboard interrupts, *at least in MS-Windows*.
Rusty? I think, years ago, I used signal(s) to establish time-limits on
systems that had a possibility of 'run-away' or over-refining a solution
which would only ever be asymptotic. I've not used the library in this
manner.
That said, I'm using one of Python's asynchronous features, and Internet
activity is riddled with delay-periods which make such retrievals ripe
for async (code) solutions...
>> Why do you need to abandon the process mid-way?
>
> Take your pick. Mostly because of "I need to leave *now*". Or perhaps
> because of an "you have X seconds before the device shuts down because of
> the battery being low" situation.
I (personally) cannot make use of the above. However, even if my
portable's battery threatens complete disaster, the system "hibernates",
and thus averts major disaster, eg file system (or RDBMS) corruption.
This seems enough for 99% of 'average uses'. Of course it is regarded as
trivially-unacceptable in the non-stop world, eg banking. Would our OP
classify this project as anything other than the first of those
categories? Thus:
>> What is the OP's definition of "unlikely" or "acceptable risk"?
>
> Good question, but one I had no wish for to try to ascertain. I just gave
> some "worst case" secenario based replies (aka, the "did you think of <this>
> situation" kind).
Understood. However, your understanding of RDBMS interrupt 'security'
appears either aged, or biased to a particular implementation (which (in
my imagination) wouldn't match the high-standards I expect you hold).
Have already admitted that I (personally) may 'over use' RDBMS because
it is 'easy' for me. When we do feel the justification to examine the
details of "worst case scenarios"/"did you think of this?" RDBMS
stand-out as a 'solution' simply because of the incredible amounts of
time and depths of thought, highly-specialised minds (far superior to
any input I could offer) have invested in providing highly refined
services/servers. (which I dare-say informed @Chris' comments)
Neither MSFT nor the relevant GNU/Linux projects assure common file
systems to such a degree (and particularly not in the mentioned
circumstances). That's why there are FS 'rescue' procedures (Linux runs
fsck automatically when 'trouble' is noted during system-start and every
so-many reboots, regardless).
I'm sufficiently intrigued to wonder if anyone will dispute/correct such
- but not sufficiently motivated to research any position other than the
one currently held - so call me "Curious", but not "George" then...
>> There are so many reasons why such won't work first-time, when they should
>> every time; that it may be quite difficult to detect 'corruption'
>
> :-) That was not even considered. Just the "what do I still need to
> download" datafile.
Yes, we left the OP's (actual) spec, way-back somewhere!
>> Accordingly, there is no non-atomic transaction in the proposal
>
> The problem there is that you are second-guessing to what the OP will be
> writing, and that it will be good. I didn't and I don't assume that. I've
> seen too much "it works, so its good" noobie code. :-)
Absolutely! One of the 'joys' of working text-only is that even when one
knows (much) more about the background to a posted-question, it is still
so easy to 'answer-wrong'.
Even in my courses, where the Discussion Lists (are supposedly) related
to each week/chapter of a course, you'd think we'd have adequate 'hints'
as to the level of the trainee and where his/her question is
'coming-from'. Not true!
The secret is probably somewhere in the understanding of *that*
potential problem and going from there...
Sigh, if I had a dollar for every time someone looked at a simple
solution (MS-Excel I'm looking at you!) and uttered 'suggestions' such
as "we could run the entire company off one of these spreadsheet things"
or "if we captured all the company's transactions, couldn't we run it
off one Python pgm?"...
The world has moved-on though. Forty years ago it was common for someone
writing his/her first program(me) to come 'crying' "the computer made a
mistake" because it performed some simple arithmetic/statistical
calculation without yielding the expected answer!
That said, it continues to astonish me that computing-professionals
still can't apply the 'attention to detail' coding requires to their
typing - regardless of whether the input is code or a Discussion List
post. What is that mind-set???
(this comment NOT aimed at you, or any other participant on this list,
personally!)
>> Do I want to deal with the complexities of managing files and corruptions,
>> in that arena?
> ...
>> Do you?
>
> :-) Its was-and-is not my choice to make. I gave the OP some stuff to
> think about, and left making the choice upto him. All three of the
> presented options are viable.
Good stuff! Yet at the same time, that very lack of clarity is good
reason to allow that 'another' solution might be 'right' - even if it is
not 'better'.
(for any definitions of "right" or "better", or ...)
As sent to the OP. I appreciate these discussions, in the expectation of
learning something-new. (and with rust-removal paints at the ready!)
>> Be aware that formation rules for URLs are not congruent with OS FS rules!
>
> Yup. Though I seldom see that happen. Though I guess I should have
> mentioned that ... :-|
I'd show you the marks where that came back to bite me once - but
fortunately for you, the list doesn't allow graphic attachments (nor
should distressed (and distressing) images of such parts of one's
anatomy EVER be seen, even by qualified medical professionals...)
--
Regards =dn
More information about the Python-list
mailing list