reducing the number of thread, fix detial request methos

master3.3
Спиридонов Денис 12 years ago
parent 8d14209930
commit 28271abaaf

@ -38,7 +38,7 @@ def clean (SID_FILE, PID_FILE, SID_PID, SIDS_DIR, PIDS_DIR):
class ApiWsdl:
# watch for process
def watcher_pid_proc(self, meth, pid, auto_delete):
def watcher_pid_proc(self, pid):
period = 2
time.sleep(period)
try:
@ -47,32 +47,13 @@ class ApiWsdl:
# frequency check
time.sleep(period)
# verifying, exposed flag complete
if self.child_kill(pid) == 1:
print _("killed %d") %pid
# send process signal KeyboardInterrupt
os.kill(meth.pid, 2)
if auto_delete:
self._delete_pid(pid)
return 0
# read data
if self.glob_process_dict[pid]['status'] == 0 or\
self.glob_process_dict[pid]['status'] == 2:
time.sleep(period)
if auto_delete:
self._delete_pid(pid)
return 0
if auto_delete:
self._delete_pid(pid)
time.sleep(period)
self._delete_pid(pid)
except IOError:
print 'Except IOError'
except:
print _("watcher process pid %d error") %pid
try:
if auto_delete:
self._delete_pid(pid)
self._delete_pid(pid)
except:
pass
time.sleep(0.1)

@ -14,7 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import urllib, sys, getopt, os, shutil
import urllib, sys, getopt, os
from M2Crypto import SSL, httpslib
from M2Crypto import RSA, X509, EVP, m2, Rand, Err
import socket

@ -323,11 +323,12 @@ class ApiWsdl () :
self.process_pid[pid] = p
p.start()
# start watcher (for kill process on signal)
watcher = threading.Thread(target = self.watcher_pid_proc,\
args = (p, pid, auto_delete))
if auto_delete:
# start watcher (for kill process on signal)
watcher = threading.Thread(target = self.watcher_pid_proc,\
args = (pid, ))
watcher.start()
watcher.start()
return str(pid)
# wrap all method

@ -137,18 +137,24 @@ class ApiWsdl () :
pid_file_kill = self.pids + "/%d.pid" %pid
#try:
# set complete flag
self.glob_process_dict[pid]['flag'] = 1
#self.glob_process_dict[pid]['flag'] = 1
meth = self.process_pid[pid]
if meth.is_alive():
try:
os.kill(meth.pid, 2)
except OSError, e:
print 'No such process %d' %meth.pid, e
return 0
#except:
#return 1
# check exhibited a complete flag
def child_kill(self, pid):
try:
# if set, return 1
if self.glob_process_dict[pid]['flag'] == 1:
return 1
## check exhibited a complete flag
#def child_kill(self, pid):
#try:
## if set, return 1
#if self.glob_process_dict[pid]['flag'] == 1:
#return 1
return 0
except:
return 0
#return 0
#except:
#return 0

@ -174,7 +174,6 @@ class ApiWsdl:
dv = datavars.DataVarsApi()
dv.importApi()
dv.flIniFile()
initfunc(dv)
errors = self.check_req_params(dv, info,
ordered=['cl_page_count',
'cl_page_offset'],
@ -210,6 +209,12 @@ class ApiWsdl:
errors.append(ReturnedMessage(type = 'error', field = field,
message = mess, expert = True))
return errors
dv = datavars.DataVarsApi()
dv.importApi()
dv.flIniFile()
dv.Set('cl_page_count', info.cl_page_count)
dv.Set('cl_page_offset', info.cl_page_offset)
self.set_cache(sid, 'show_request', "vars", dv, smart=False)
return self.requestCommon(sid,info,'show_request')
@rpc(Integer, Integer, Boolean,_returns = ViewInfo)
@ -257,20 +262,26 @@ class ApiWsdl:
dv.addGroup(_("Requests detail"),
normal=('cl_req_id', 'cl_req_user_name', 'cl_req_ip', 'cl_req_mac',
'cl_req_date', 'cl_req_location', 'cl_req_group'))
'cl_req_date', 'cl_req_location', 'cl_req_group',
'cl_page_count','cl_page_offset'))
view = getViewForVariables (dv,step,expert)
group = GroupField(name='',nextlabel=_("Done"),last=True)
group.fields = []
group.fields.append(Field(
name = "but0",
label = _("Back"),
value = "show_request",
element = "button"))
group.fields.append(Field(
name = "but1",
label = "Confirm",
label = _("Confirm"),
value = "confirm_request",
element = "button"))
group.fields.append(Field(
name = "but2",
label = "Delete",
label = _("Delete"),
value = "delete_request",
element = "button"))
view.groups.append(group)

@ -77,7 +77,6 @@ class ApiWsdl:
# Учёт процесса выполнения
perc = 0
while self.getProgress() < 100:
print '=========>>>>>', self.getProgress()
time.sleep(1)
perc += 20
#self.addMessage(type = 'warning', message = '%s%%' %perc)
@ -91,8 +90,6 @@ class ApiWsdl:
'gdfg df,gg dfgdf,gdfgergergregerg,ergerg re g ge '\
'gdfg df,gg dfgdf,gdfgergergregerg,ergerg re g ge '\
'gdfg df,gg dfgdf,gdfgergergregerg,ergerg re g ge ')
print "END PROCESS!!!!!!!!!!!!"
print '+++++++++++++++>>>>>', self.getProgress()
#question = self.askQuestion('enter name: ', None)
#print question
#print self.askPassword ('Please, your enter pass: ')
@ -112,7 +109,7 @@ class ApiWsdl:
['Three','31','32','33','34'], ['Four','41','42','43','44'],\
['Three','31','32','33','34'], ['Four','41','42','43','44']]
#self.printTable(head, body, "Table 2!")
self.printTable(head, body, "Table 2!")
self.startTask("Second task!", True, num = 2)
perc = 0
while self.getProgress() < 50:
@ -184,7 +181,7 @@ class ApiWsdl:
errors = []
errors.append(ReturnedMessage(type = 'error', field = 'name', \
message = 'Do not input "qqq"vvv ddddddd dddddd!' + \
'input not @@@@@# $$$$$$$$ ^^^^^^^^^ vvvvvvv vvv'))
'input not @@@@@# $$$$$$$$ ^^^^^^^^^'))
errors.append(ReturnedMessage(type = 'error', field = 'boolvariable', \
message = 'Choose this!'))
return errors
@ -193,8 +190,8 @@ class ApiWsdl:
return [returnmess]
if rrr.name == 'qqqq':
errors = []
#errors.append(ReturnedMessage(type = 'error', field = 'name', \
#message = 'not "qqqq" for step 2!'))
errors.append(ReturnedMessage(type = 'error', field = 'name', \
message = 'not "qqqq" for step 2!'))
errors.append(ReturnedMessage(type = 'error', field = 'boolvariable', \
message = 'Choose this!'))
return errors
@ -227,7 +224,7 @@ class ApiWsdl:
pid = self.startprocess(sid, target=say_hello_meth, method="say_hello_meth",\
method_name='test', \
args_proc = (name, times, town))
returnmess = ReturnedMessage(type = 'pid', message = pid, expert = True)
returnmess = ReturnedMessage(type = 'pid', message = pid)
#returnmess.type = "pid"
#returnmess.message = pid
return [returnmess]

Loading…
Cancel
Save