Skip to content

Commit 239e2bd

Browse files
committed
Fix bug in scheduler where tasks defined with no params weren't queued properly
1 parent 0f48fc6 commit 239e2bd

3 files changed

Lines changed: 34 additions & 2 deletions

File tree

mrq/scheduler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def _hash_task(task):
1313
if params:
1414
params = json.dumps(sorted(list(task["params"].items()), key=lambda x: x[0])) # pylint: disable=no-member
1515

16-
full = [str(task.get(x)) for x in ["path", "interval", "dailytime", "queue"]]
16+
full = [str(task.get(x)) for x in ["path", "interval", "dailytime", "weekday", "monthday", "queue"]]
1717

1818
full.extend([str(params)])
1919
return " ".join(full)
@@ -130,7 +130,7 @@ def check(self):
130130
if task_data:
131131
queue_job(
132132
task_data["path"],
133-
task_data["params"],
133+
task_data.get("params") or {},
134134
queue=task.get("queue"))
135135
log.debug("Scheduler: queued %s" % task_data)
136136

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
SCHEDULER_TASKS = [
3+
{
4+
"path": "tests.tasks.general.MongoInsert",
5+
"interval": 5
6+
},
7+
{
8+
"path": "tests.tasks.general.MongoInsert",
9+
"interval": 6
10+
},
11+
{
12+
"path": "tests.tasks.general.Add",
13+
"interval": 5
14+
}
15+
]
16+
17+
SCHEDULER_INTERVAL = 1

tests/test_scheduler.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,3 +165,18 @@ def test_scheduler_monthday(worker):
165165
inserts = list(collection.find())
166166
assert len(inserts) == 1
167167
assert collection.find({"params.monthday": datetime.datetime.utcnow().day}).count() == 1
168+
169+
170+
def test_scheduler_noparams(worker):
171+
# Task is scheduled in 3 seconds
172+
worker.start(
173+
flags="--scheduler --config tests/fixtures/config-scheduler7.py"
174+
)
175+
176+
time.sleep(2)
177+
178+
scheduled_jobs = worker.mongodb_jobs.mrq_scheduled_jobs
179+
jobs = worker.mongodb_jobs.mrq_jobs
180+
181+
assert len(list(scheduled_jobs.find())) == 3
182+
assert len(list(jobs.find())) == 3

0 commit comments

Comments
 (0)