> Hi Kenzo,
> I think it would help me to understand your problem, if you would provide a minimal configuration file with two
> logbooks.
>
> There is no ELOG internal feature to propagate data from one logbook to another;
> using a shell script is the only method I know.
> But you could easily put your script into the background:
> ELOG can handle multiple parallel request, by handling one request after the other.
>
> Kind Regards, Andreas
Hi Andreas
Im using python to do the scripting. Everything works fine until it comes to submitting the entry to my logbook.
The extractTable.py file is the one running the command to submit to elog.
I see now that im starting a subprocess in my python script (subprocess.call) and thats why its not finishing.
Could you perhaps suggest how I would go about doing this by putting my scripts in the
background? I might have to look at multiprocessing in python as well. The reason im using python is because im
doing alot of file processing as well. I do have to add that this method works perfectly when i just run the python
on its own. As soon as i run it by submiting an elog entrie from the browser it hangs on the subprocess.call method.
Regards, Kenzo |
#!/usr/bin/python
from bs4 import BeautifulSoup
import sys
import re
import time
import csv
import subprocess
#time.sleep(2)
counter = 0
DetectorNum = 1
soup = BeautifulSoup(open('/usr/local/elog/logbooks/Table.html'), 'html5lib')
for table in soup.find_all('table'):
for row in table.find_all('tr'):
col = row.find_all('td')
Xia = col[0].string
module = col[1].string
channel = col[2].string
name = col[3].string
arrayPos = col[4].string
panel = col[5].string
if counter == 0:
titleList = (str(Xia), str(module), str(channel), str(name), str(arrayPos), str(panel))
counter = counter + 1
else:
record = (str(Xia), str(module), str(channel), str(name), str(arrayPos), str(panel))
file = open('/usr/local/elog/logbooks/tableData', 'w')
for i in range(len(titleList)):
file.write(str(titleList[i])+" = "+str(record[i])+"\n")
file.close()
DetName = "C"+str(DetectorNum)
subprocess.call(["elog", "-h", "localhost", "-p", "8080", "-l", DetName, "-u", "System", "password", "-a", "Author=System", "-a", "Subject=\"testing the auto writing of detectors\"", "-m", "/usr/local/elog/logbooks/tableData"])
counter = counter + 1
DetectorNum = DetectorNum + 1
|