Je lance un script python script en utilisant python-shell. Le script python (nommé combine.py) renvoie des données au format json. Mais le code fonctionne bien sur ma machine locale mais pas sur l'instance aws. J'obtiens l'erreur suivante dans les logs de pm2 :
SyntaxError: Unexpected token / in JSON at position 0
1|app | at JSON.parse (<anonymous>)
1|app | at PythonShell.asJson (/home/ubuntu/toolCaseWebsite/node_modules/python-shell/index.js:358:21)
1|app | at /home/ubuntu/toolCaseWebsite/node_modules/python-shell/index.js:310:42
1|app | at Array.forEach (<anonymous>)
1|app | at PythonShell.recieveInternal (/home/ubuntu/toolCaseWebsite/node_modules/python-shell/index.js:306:15)
1|app | at PythonShell.receiveStderr (/home/ubuntu/toolCaseWebsite/node_modules/python-shell/index.js:290:21)
1|app | at Socket.<anonymous> (/home/ubuntu/toolCaseWebsite/node_modules/python-shell/index.js:108:18)
1|app | at Socket.emit (events.js:182:13)
1|app | at Socket.EventEmitter.emit (domain.js:442:20)
1|app | at addChunk (_stream_readable.js:279:12)
Je me suis assuré que python script renvoie des données json valides en plaçant d'abord les données dans un fichier et en vérifiant ensuite ces données via un validateur json en ligne.
Nodejs (fichier javascript)
var ps = require('python-shell')
noOfLines = 2
noOfClusters = 5
var options = {
mode: 'json',
pythonOptions: ['-u'], // get print results in real-time
scriptPath: './pythonScripts/',
args: [noOfClusters, noOfLines, processingData]
}
ps.PythonShell.run('combine2.py', options, function(err, results) {
if (err) throw err
// Results is an array consisting of messages collected during executio n
//console.log(results)
// Data send to index_timeline
res.render('index_timeline', {
results: results[0]
})
fs.writeFile('myOutput.txt', JSON.stringify(results, 0, 2), err => {
// throws an error, you could also catch it here
if (err) throw err
// success case, the file was saved
console.log('File saved!')
})
})
Python script(combine.py)
if __name__ == "__main__":
# getting parameters
content = sys.argv[3]
nclusters= int(sys.argv[1])
noOfLines=int(sys.argv[2])
data={"clusters":[]}
# Data Cleaning and then splitting into sentences
sentences = dataCleaning(content).split('.')#splitting sentences on basis of comma rather fullstop
sentences = list(filter(None, sentences))
temp=list()
myDict=dict()
summarizing=str()
#getting clusters
clusters = cluster_sentences(sentences, nclusters)
for cluster in range(nclusters):
for i,sentence in enumerate(clusters[cluster]):
temp.append(sentences[sentence])
summarizing+=sentences[sentence]+". "
myDict["sentences"]=list(temp)
sentence_tokens, word_tokens = tokenize_content(summarizing)
sentence_ranks = score_tokens(word_tokens, sentence_tokens)
myDict["summary"]=str(summarize(sentence_ranks, sentence_tokens,noOfLines))
data["clusters"].append(dict(myDict))
myDict.clear()
del temp[:]
summarizing=''
print(json.dumps(data))
myOutput.txt(données que j'ai écrites dans le fichier txt ci-dessus)
[
{
"clusters": [
{
"sentences": [
" Qoum & Maa Baap K Duaon Se Award Haasil Kiya",
" Qoum & Maa Baap K Duaon Se Award Haasil Kiya",
" Qoum & Maa Baap K Duaon Se Award Haasil Kiya"
],
"summary": " Qoum & Maa Baap K Duaon Se Award Haasil Kiya. Qoum & Maa Baap K Duaon Se Award Haasil Kiya."
},
{
"sentences": [
" Mushtaq Ahmed",
" Mushtaq Ahmed",
" Mushtaq Ahmed NIJAMHAMY"
],
"summary": " Mushtaq Ahmed. Mushtaq Ahmed NIJAMHAMY."
}
]
}
]