✪ rqworker --db 10 default high
16:06:30 RQ worker started, version 0.3.7
16:06:30
16:06:30 *** Listening on default, high...
16:06:49 high: jobs.multiply(5, 2) (2df52ba2-bd32-4849-a8e1-c5241c78b542)
16:06:49 Job OK, result = 10
16:06:49 Result is kept for 500 seconds.
16:06:49
16:06:49 *** Listening on default, high...
16:07:14 default: jobs.add(7, 13) (44bf19a1-7793-4ef9-81e2-f9cece8a966d)
16:07:14 Job OK, result = 20
16:07:14 Result is kept for 500 seconds.
16:07:14
16:07:14 *** Listening on default, high...
16:08:32 Warm shut down requested.
✪
✪ python enqueue_delayed_jobs.py
Enqueued 0 Jobs.
Enqueued 0 Jobs.
Enqueued 0 Jobs.
Enqueued 1 Jobs.
Enqueued 0 Jobs.
Enqueued 0 Jobs.
Enqueued 0 Jobs.
Enqueued 0 Jobs.
Enqueued 1 Jobs.
Enqueued 0 Jobs.
Shutting Down
✪
✪ python delay_jobs.py
Delay jobs.add(7, 13) on default queue for 30 seconds.
Delay jobs.multiply(5, 2) on high queue for 5 seconds.
✪
If anyone tries to use this and comes across a "Error: ERR value is not a valid float" error, it's because the arguments to ZADD are in the wrong order.
self.redis.zadd('queue:delayed', self._now() + seconds, pickle.dumps({'job': job, 'queue': queue, 'args': args, 'kwargs': kwargs, 'id': uuid.uuid1().hex}))
should work.