What do you suggest  then? This part work? the problem is inside if 
script.sc_status == 11: 

On Tuesday, February 10, 2015 at 2:21:13 PM UTC+1, Niphlod wrote:
>
> oh please DON'T chdir ! it's not thread safe
>
> On Tuesday, February 10, 2015 at 11:19:18 AM UTC+1, Yebach wrote:
>>
>> Hello
>> I encounter an interesting problem or bug
>>
>> I have a app that runs some *.exe program that returns a file (*.out) to 
>> be processed every couple of second. 
>> If I want to stop this exe from working I delete *.lls file. 
>> So if a user hits play button I create lls file put it in a directory, 
>> sets status in db to 11 and then after some calculation is done user clicks 
>> on stop button and lls file is deleted, status in db is set back to 10, and 
>> some more actions are done with out file (doesn't really matter)
>>
>> NOW HERE IS THE CATCH
>>
>> If I run web2py from eclipse it works fine
>>
>> if I run web2py as standalone so doble click on web2py.py file in my 
>> windows explorer the lls file is not deleted, BUT there is a catch. If I 
>> refresh the page, click the stop button in my webapp lls file is deleted
>>
>> ANY suggestions?
>>
>> BTW there are no errors
>>
>> here is my code
>>
>>
>> id =  (request.vars.id)
>> try:
>>         path = os.path.join(request.folder, 'engine')
>>         llsPath = os.path.join(request.folder, 'engine', 'e1', 
>> request.vars.id + '.lls') 
>>         
>>         data = db(getDbScript(db(getDbScript(request.vars.id)).select(
>> db.scripts.id, db.scripts.sc_lls, db.scripts.sc_engine_output, 
>> db.scripts.sc_status, db.scripts.sc_menu_data).first())).select(
>> db.scripts.id, db.scripts.sc_lls, db.scripts.sc_engine_output, 
>> db.scripts.sc_status, db.scripts.sc_menu_data).first()
>>         script = db(getDbScript(request.vars.id)).select(db.scripts.id, 
>> db.scripts.sc_lls, db.scripts.sc_engine_output, db.scripts.sc_status, 
>> db.scripts.sc_menu_data,db.scripts.sc_organization, 
>> db.scripts.sc_cal_start).first()
>>         org = script["sc_organization"]
>>         shifts = db(db.shifts.sh_organisation == 
>> org).select(db.shifts.sh_code, 
>> db.shifts.sh_start1,db.shifts.sh_start2,db.shifts.sh_end1,db.shifts.sh_end2,db.shifts.sh_color,db.shifts.sh_length1,db.shifts.sh_length2).as_list()
>>         outPath = os.path.join(request.folder, 'engine', 'e1', 
>> request.vars.id + '.out')
>>         
>>         if not script:
>>             return dict(status = -1)
>>         
>>         ###Status = 11 - Script is being  calculated 
>>         if script.sc_status == 11:
>>             
>>             
>>             # Change status - status = 10 --> user lahko da skripo 
>> računat - nima napak oz pomanjklivih podatkov
>>              #, sc_engine_output = readOutFile(request.vars.id))s        
>>             # Add when user stopped calculation (ce bojo problemi se bo 
>> zraven posiljalo tudi id od script activitya)
>>             #Odstranim lls datoteko --> engine preneha delovat
>>             if os.path.isfile(llsPath):
>>                 os.remove(llsPath)
>>             
>>             activity = db(db.script_activity.sa_id_script == 
>> request.vars.id).select(db.script_activity.id, 
>> db.script_activity.sa_stop, orderby = ~db.script_activity.id, limitby = 
>> (0, 1)).first()
>>             activity.update_record(sa_stop = 'now')
>>             script.update_record(sc_status = 10)
>>             
>>             
>>             ##če obstaja out datotkea
>>             if os.path.isfile(outPath):
>>                 #preberemo fajl
>>                 out = readOutFile(request.vars.id).split('\n')
>>                 #Vnesemo podatke v tabelo script
>>                 script.update_record(sc_engine_output = readOutFile(
>> request.vars.id))
>>                 #odstranim out. datoteko
>>                 os.remove(outPath)
>>                 workersDb = db(db.workers.w_organisation == org).select(
>> db.workers.id, db.workers.w_nick_name).as_list()
>>                 #sparsamo out datoteko da jo lahko damo v tabelo result
>>                 dateStart =  script["sc_cal_start"]
>>                 resultData = parseOut(out, dateStart, shifts, workersDb, 
>> org)
>>                 #Pišemo rezultate v tabelo results
>>                 resultsDbInsert(resultData["resultsDbData"], org, id)
>>             
>>                 
>>             return dict(status = 1)
>>         
>>            
>>         else:
>>            
>>             ##prevedemo skripto v id.lls, prav tako zapišemo še v sc_lls
>>             #
>>             db.script_activity.insert(sa_id_script = request.vars.id, 
>> sa_start = 'now');
>>             
>>             ##validiramo json če ima kakršne koli napake idt.
>>             valJson = validateJson(script.sc_menu_data)
>>             if 1!=1 :#not valJson:
>>                 #validacija ni uspela vrnemo error 300 
>>                 return dict(status = 300)
>>             #$#nov json - z vsemi errorji zapiđšemo v sc_menu_data
>>             script.update_record(sc_menu_data = valJson["formJson"])
>>             #če obstajjo errorji pol konc
>>             if  1!=1:#valJson["errors"]:
>>                 #skripta gre v status 91, kar pomen da je user ne more 
>> dat računat
>>                 script.update_record(sc_status = 91)
>>                 #print valJson["errors"]
>>                 return dict(status = 200)
>>             
>>             else:
>>                 script.update_record(sc_status = 11)
>>                 if os.path.isfile(outPath):
>>                     os.remove(outPath)
>>                 TranslateData(script.sc_menu_data, path, id, org)
>>                 # Run woshi engine
>>                 path_1 =  os.path.join(path, 'e1')
>>                 os.chdir(path_1)
>>                 #p = subprocess.Popen(['w_parameter.bat', id], 
>> shell=True, stdout = subprocess.PIPE)
>>                 p = subprocess.Popen(['woshi_engine.exe', id], 
>> shell=True, stdout = subprocess.PIPE)
>>                 return dict(status = 1)
>>            
>>     except Exception as e:
>>         script.update_record(sc_status = 10)
>>         exc_type, exc_obj, exc_tb = sys.exc_info()
>>         fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
>>         
>>         print(exc_type, fname, exc_tb.tb_lineno)
>>         print e.__doc__
>>         print e.message
>>        
>>         return dict(status = 666)
>>
>>
>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to