diff --git a/packages/flamenco/flamenco/eve_settings.py b/packages/flamenco/flamenco/eve_settings.py
index b7b637ff98ed85a7c0304ed5cabded9dc6d27641..0a457fb3046017744b4d52e8b9a9d1f4300fce35 100644
--- a/packages/flamenco/flamenco/eve_settings.py
+++ b/packages/flamenco/flamenco/eve_settings.py
@@ -221,6 +221,10 @@ tasks_schema = {
         'default': 'queued'
     },
     'priority': {
+        'type': 'integer',
+        'default': 0
+    },
+    'job_priority': {
         'type': 'integer',
         'min': 1,
         'max': 100,
diff --git a/packages/flamenco/flamenco/jobs/routes.py b/packages/flamenco/flamenco/jobs/routes.py
index f4da8bd7141f96429e14237c2946df3e7f27accb..de4cadb7f43bb18b87c283a4cca939a6e292ce3d 100644
--- a/packages/flamenco/flamenco/jobs/routes.py
+++ b/packages/flamenco/flamenco/jobs/routes.py
@@ -91,7 +91,7 @@ def view_job_depsgraph(project, job_id):
         tid_to_idx = {task['_id']: tidx
                       for tidx, task in enumerate(tasks._items)}
 
-        for task in tasks._items:
+        for task in sorted(tasks._items, key=lambda task: task['priority']):
             task_id = tid_to_idx[task['_id']]
             nodes.append({
                 'id': task_id,
diff --git a/packages/flamenco/flamenco/tasks/__init__.py b/packages/flamenco/flamenco/tasks/__init__.py
index 81049d11a475b463136759b36a33db15b8a894d8..4c8333d6a4ddd9610e26fa44d6afa43ae6c0793b 100644
--- a/packages/flamenco/flamenco/tasks/__init__.py
+++ b/packages/flamenco/flamenco/tasks/__init__.py
@@ -27,7 +27,7 @@ REQUEABLE_TASK_STATES = {'completed', 'canceled', 'failed'}
 class TaskManager(object):
     _log = attrs_extra.log('%s.TaskManager' % __name__)
 
-    def api_create_task(self, job, commands, name, parents=None):
+    def api_create_task(self, job, commands, name, parents=None, priority=50):
         """Creates a task in MongoDB for the given job, executing commands.
 
         Returns the ObjectId of the created task.
@@ -43,7 +43,8 @@ class TaskManager(object):
             'status': 'queued',
             'job_type': job['job_type'],
             'commands': [cmd.to_dict() for cmd in commands],
-            'priority': job['priority'],
+            'job_priority': job['priority'],
+            'priority': priority,
             'project': job['project'],
         }
         # Insertion of None parents is not supported
@@ -68,7 +69,12 @@ class TaskManager(object):
         payload = {
             'where': {
                 'job': unicode(job_id),
-            }}
+            },
+            'sorted': [
+                ('priority', -1),
+                ('_id', 1),
+            ],
+        }
         if status:
             payload['where']['status'] = status
         tasks = Task.all(payload, api=api)