22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#### GRAMMAR CHECKER ####
oGrammarChecker = grammalecte.GrammarChecker("fr", "Server")
oSpellChecker = oGrammarChecker.getSpellChecker()
oTextFormatter = oGrammarChecker.getTextFormatter()
oGCE = oGrammarChecker.getGCEngine()
xProcessPoolExecutor = None
def initExecutor (nMultiCPU=None):
"process pool executor initialisation"
global xProcessPoolExecutor
if xProcessPoolExecutor:
# we shutdown the ProcessPoolExecutor which may have been launched previously
xProcessPoolExecutor.shutdown(wait=False)
nMaxCPU = max(os.cpu_count()-1, 1)
if nMultiCPU is None or not (1 <= nMultiCPU <= nMaxCPU):
nMultiCPU = nMaxCPU
print("CPU processes used for workers: ", nMultiCPU)
xProcessPoolExecutor = concurrent.futures.ProcessPoolExecutor(max_workers=nMultiCPU)
def parseText (sText, dOptions=None, bFormatText=False, sError=""):
"parse <sText> and return errors in a JSON format"
sJSON = '{ "program": "grammalecte-fr", "version": "'+oGCE.version+'", "lang": "'+oGCE.lang+'", "error": "'+sError+'", "data" : [\n'
sDataJSON = ""
for i, sParagraph in enumerate(txt.getParagraph(sText), 1):
if bFormatText:
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#### GRAMMAR CHECKER ####
oGrammarChecker = grammalecte.GrammarChecker("fr", "Server")
oSpellChecker = oGrammarChecker.getSpellChecker()
oTextFormatter = oGrammarChecker.getTextFormatter()
oGCE = oGrammarChecker.getGCEngine()
def parseText (sText, dOptions=None, bFormatText=False, sError=""):
"parse <sText> and return errors in a JSON format"
sJSON = '{ "program": "grammalecte-fr", "version": "'+oGCE.version+'", "lang": "'+oGCE.lang+'", "error": "'+sError+'", "data" : [\n'
sDataJSON = ""
for i, sParagraph in enumerate(txt.getParagraph(sText), 1):
if bFormatText:
|
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
return '{"error": "suggestion module failed"}'
try:
return '{"suggestions": ' + json.dumps(lSugg, ensure_ascii=False) + '}'
except json.JSONDecodeError:
return '{"error": "json encoding error"}'
return '{"error": "no token given"}'
#### SERVEUR ####
HOMEPAGE = """
<!DOCTYPE HTML>
<html>
<head>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
return '{"error": "suggestion module failed"}'
try:
return '{"suggestions": ' + json.dumps(lSugg, ensure_ascii=False) + '}'
except json.JSONDecodeError:
return '{"error": "json encoding error"}'
return '{"error": "no token given"}'
#### PROCESS POOL EXECUTOR ####
xProcessPoolExecutor = None
def initExecutor (nMultiCPU=None):
"process pool executor initialisation"
global xProcessPoolExecutor
if xProcessPoolExecutor:
# we shutdown the ProcessPoolExecutor which may have been launched previously
print("ProcessPoolExecutor shutdown.")
xProcessPoolExecutor.shutdown(wait=False)
nMaxCPU = max(os.cpu_count()-1, 1)
if nMultiCPU is None or not (1 <= nMultiCPU <= nMaxCPU):
nMultiCPU = nMaxCPU
print("CPU processes used for workers: ", nMultiCPU)
xProcessPoolExecutor = concurrent.futures.ProcessPoolExecutor(max_workers=nMultiCPU)
#### SERVEUR ####
HOMEPAGE = """
<!DOCTYPE HTML>
<html>
<head>
|
349
350
351
352
353
354
355
356
357
358
|
main(xArgs.host or "localhost", \
xArgs.port or 8080, \
dOpt,
xArgs.test_page,
xArgs.multiprocessor)
else:
# we do it for the server may be used with WSGI (which doesn’t call main())
# WSGI servers just import the given file as a module and use an object exported from it (<app> in this case) to run the server.
initExecutor()
|
|
|
350
351
352
353
354
355
356
357
358
359
|
main(xArgs.host or "localhost", \
xArgs.port or 8080, \
dOpt,
xArgs.test_page,
xArgs.multiprocessor)
else:
# Must be launched at start, for WSGI server (which doesn’t call main())
# WSGI servers just import the given file as a module and use an object exported from it (<app> in this case) to run the server.
initExecutor()
|