Taksis Ierakstīts Februāris 22, 2019 Share Ierakstīts Februāris 22, 2019 Sveicināti. Uz W2008 R2 servera darbojas Python 2.7.12 skripts, kurš cikliski izpilda zināmas darbības un beidz darbu pēc tam, kad ir nospiests ctrl/c. Līdzīgi, ka šajā piemērā. from time import sleep import sys signaled_to_stop = False sheep_counter = 1 print "Running.. (press CTRL-C to stop)" while True: try: # Wait 3 seconds between each step. sleep(3) print "Counting sheeps... %s" % sheep_counter sheep_counter += 1 # If signaled to stop then - Create a peepfile and stop the loop if signaled_to_stop: print "Stop requested..." if signaled_to_stop: break except KeyboardInterrupt: print "\nStopping (might take some seconds).." signaled_to_stop = True except SystemExit as err: raise err print "Process has finished." palaižam skiptu: python cikls.py Running.. (press CTRL-C to stop) Counting sheeps... 1 Counting sheeps... 2 Counting sheeps... 3 Counting sheeps... 4 Counting sheeps... 5 Stopping (might take some seconds).. Counting sheeps... 6 Stop requested... Process has finished. Divi jautājumi: 1. Kā panākt to, lai skripta darbības rezultāts nepārtraukti rakstītos teksta failā? Savukārt, teksta fails atjaunatots ("refrešotos") tā, lai jebkurā brīdī varētu redzēt līdz kurai "aitai" skripts ir ticis? Variants ar parasto stdout pāradresāciju darbojas..., python cikls.py > rezultats.log bet fails izveidojas tikai pašās beigās, tad, kad skripta darbība ir pārtraukta ar ctrl/c. Skripta darbības laikā log faila garums visu laiku ir 0 (log fails ir tukšs). 2. Kā palaist skriptu automātiski pēc servera pārstartēšanās? Es mēģināju ielikt windows scheduler. Skripts palaižas, bet uzreiz beidz darbu. cikls.py Link to comment Share on other sites More sharing options...
AndrisBB Februāris 22, 2019 Share Februāris 22, 2019 Pec printa ieliec sys.stdout.flush() 1 1 Link to comment Share on other sites More sharing options...
Taksis Februāris 22, 2019 Author Share Februāris 22, 2019 Super! Liels Paldies!!! Ieliku pēc: print "Counting sheeps... %s" % sheep_counter sys.stdout.flush() Tagad log fails atjaunojas. Link to comment Share on other sites More sharing options...
Anonīms Alkoholiķis Februāris 22, 2019 Share Februāris 22, 2019 Kapec daram kanpie pertikiem? Varbut aizvietojam sys.stdout objektu ar file objektu? 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!