[Debconf-video-commits] r436 - package/trunk/src
Ben Hutchings
benh at alioth.debian.org
Sat Jun 20 15:01:38 UTC 2009
Author: benh
Date: 2009-06-20 15:01:37 +0000 (Sat, 20 Jun 2009)
New Revision: 436
Modified:
package/trunk/src/dc-do-transcoding
package/trunk/src/dc-video-schema.sql
Log:
Move encoding host configuration into the database so we can change it dynamically
Modified: package/trunk/src/dc-do-transcoding
===================================================================
--- package/trunk/src/dc-do-transcoding 2009-06-20 14:58:33 UTC (rev 435)
+++ package/trunk/src/dc-do-transcoding 2009-06-20 15:01:37 UTC (rev 436)
@@ -11,6 +11,15 @@
import debconfvideo
from debconfvideo import config, database
+def get_host_procs():
+ host_procs = []
+ cur = database.get_cursor()
+ cur.execute('SELECT hostname, nproc FROM video_encoding_host')
+ for host, nproc in cur.fetchall():
+ for proc in range(nproc):
+ host_procs.append((host, proc))
+ return host_procs
+
class Job(object):
pass
@@ -180,21 +189,14 @@
return ' '.join(escape(arg) for arg in argv)
def main(pretend=False):
- host_procs = []
- for host_nproc in config['ENCODING_HOSTS'].split(' '):
- if '*' in host_nproc:
- host, nproc = host_nproc.split('*', 1)
- nproc = int(nproc)
- else:
- host, nproc = host_nproc, 2
- for proc in range(nproc):
- host_procs.append((host, proc))
jobs_by_host_proc = {}
jobs_by_key = {}
cur = database.get_cursor()
while True:
+ host_procs = get_host_procs()
+
# Generate a queue of jobs. Remove the jobs we're running.
queue = [job
for job in get_job_queue()
@@ -213,6 +215,7 @@
break
# Assign jobs to idle processors.
+ some_idle = False
for host_proc in host_procs:
if not jobs_by_host_proc.has_key(host_proc):
host, proc = host_proc
@@ -232,6 +235,8 @@
else:
print ('INFO: skipping %s as no source file'
'available' % job.target_filename)
+ else:
+ some_idle = True
print 'INFO: running jobs:'
for host_proc, job in jobs_by_host_proc.items():
host, proc = host_proc
@@ -239,7 +244,7 @@
# If not all processors are busy, we should look for new jobs in
# 5 minutes. Otherwise we should wait for a job to finish.
- if len(jobs_by_host_proc) < len(host_procs):
+ if some_idle:
poll_time = time.time() + 300
else:
poll_time = None
Modified: package/trunk/src/dc-video-schema.sql
===================================================================
--- package/trunk/src/dc-video-schema.sql 2009-06-20 14:58:33 UTC (rev 435)
+++ package/trunk/src/dc-video-schema.sql 2009-06-20 15:01:37 UTC (rev 436)
@@ -83,6 +83,12 @@
UNIQUE (event_recording_id, target_format_id)
);
+CREATE TABLE video_encoding_host (
+ id serial PRIMARY KEY,
+ hostname character varying(32) NOT NULL,
+ nproc integer NOT NULL
+);
+
-- Subject of events. This is used for categorising events on DVDs
-- and maybe for normal web pages.
-- CREATE TABLE subject (
More information about the Debconf-video-commits
mailing list