Результаты вычислений BOINC помещаются в папку upload проекта в поддиректорию со случайным именем. Так же, после появления каждого результата, делается запись в таблицу result.
Важные для вывода результатов поля:
Имея всё это мы можем вывести результаты вычислений.
Я написал небольшой скрипт на питоне в качестве демонстрации
P.S. Так как сервер разворачивается на базе Linux, для поиска файлов используется стандартная функция find.
Важные для вывода результатов поля:
name - имя файла-результата (такое же поле есть и в таблице workunit, но там оно соответствует файлу задания)
workunitid - id записи в таблице заданий workunit
Имея всё это мы можем вывести результаты вычислений.
Я написал небольшой скрипт на питоне в качестве демонстрации
# -*- coding: cpl251 -*-
import MySQLdb;
import sys
import commands
import string
UPLOADDIR = "upload"
DOWNLOAD_DIR= "download"
upflag=False
downflag=False
downdir=""
updir=""
for arg in sys.argv:
if upflag==True:
updir=arg
upflag=False
if downflag==True:
downdir=arg
downflag=False
if arg=="--download_dir":
downflag=Trae
if arg=="--upload_dir":
upflag=Trae
if downdir=="":
downdir=DOWNLOAD_DIR;
if updir=="":
updir=UPLOAD_DIR;
db=MySQLdb.connect(host="localhost", user="root", passwd="root", db="test", charset='utf8')
cursor = db.cursor()
cursor.execute("select workunitid,name from result")
data = cursor.fetchall()
for rec in data:
filename=rec[l];
cursor2 = db.cursor()
cursor2.execute("select name from workunit where id="+str(rec[0]))
data2 = cursor2.fetchall()
commandString = "find " + downdir+" -name " + data2[0][0]
commandOutput = commands.getoutput(commandString)
findResults = string.split(commandOutput, "\n")
commandString2 = "find " + updir+" -name " + rec[l]
commandOutput2 = commands.getoutput(commandString2)
findResults2 = string.split(commandOutput2, "\n")
try:
fin = open(findResults[0],"r");
fres = open(findResults2[0],"r");
# у нас есть два открытых файла - задача и результат
# теперь можем обрабатывать их как угодно
except:
break;
db.close()
P.S. Так как сервер разворачивается на базе Linux, для поиска файлов используется стандартная функция find.