class WorkerCommand(Command): """runs Worker instance""" def __init__(self): super(WorkerCommand, self).__init__() self.rq = RQ() def run(self, **kwargs): app.logger.info("Running {} with arguments {}".format( self.__class__.__name__, kwargs)) self.__dict__.update(**kwargs) # update self's with kwargs self.rq.get_worker().work()
def test_queue_job(app): rq = RQ(app, async_=True) rq.connection.flushdb() rq.job(add) job1 = add.queue(1, 2) assert isinstance(job1, import_attribute(rq.job_class)) assert job1.args == (1, 2) assert job1.kwargs == {} assert job1.timeout == add.helper.timeout == rq.default_timeout job2 = add.queue(3, 4, description='job 2') assert job2.description == 'job 2' job3_id = uuid.uuid4().hex job3 = add.queue(5, 6, job_id=job3_id) assert job3.id == job3_id job4 = add.queue(7, 8, depends_on=job3) assert job4.dependency.id == job3.id other_queue = 'other_queue' job5 = add.queue(9, 10, queue=other_queue) # job will be scheduled in the other queue eventually assert job5.origin == other_queue job6 = add.queue(11, 12) result = job6.perform() assert result == 23 queue = rq.get_queue() assert job1 in queue.jobs assert job2 in queue.jobs assert job3 in queue.jobs # job 4 is a dependency on job 3, so not queued yet assert job4 not in queue.jobs assert job3.result is None assert job4.result is None response = rq.get_worker('default').work(True) assert response assert job4.dependency.result == 11 assert job4.result == 15 assert len(queue.jobs) == 0
def test_queue_job(app): rq = RQ(app, is_async=True) rq.connection.flushdb() rq.job(add) job1 = add.queue(1, 2) assert isinstance(job1, import_attribute(rq.job_class)) assert job1.args == (1, 2) assert job1.kwargs == {} assert job1.timeout == add.helper.timeout == rq.default_timeout job2 = add.queue(3, 4, description='job 2') assert job2.description == 'job 2' job3_id = uuid.uuid4().hex job3 = add.queue(5, 6, job_id=job3_id) assert job3.id == job3_id job4 = add.queue(7, 8, depends_on=job3) assert job4.dependency.id == job3.id other_queue = 'other_queue' job5 = add.queue(9, 10, queue=other_queue) # job will be scheduled in the other queue eventually assert job5.origin == other_queue job6 = add.queue(11, 12) result = job6.perform() assert result == 23 queue = rq.get_queue() assert job1 in queue.jobs assert job2 in queue.jobs assert job3 in queue.jobs # job 4 is a dependency on job 3, so not queued yet assert job4 not in queue.jobs assert job3.result is None assert job4.result is None response = rq.get_worker('default').work(True) assert response assert job4.dependency.result == 11 assert job4.result == 15 assert len(queue.jobs) == 0
def test_queue_job(app): rq = RQ(app, async=True) rq.job(add) job1 = add.queue(1, 2) assert isinstance(job1, rq.job_cls) assert job1.args == (1, 2) assert job1.kwargs == {} assert job1.timeout == add.helper.timeout == rq.default_timeout job2 = add.queue(3, 4, description='job 2') assert job2.description == 'job 2' job3_id = uuid.uuid4().hex job3 = add.queue(5, 6, job_id=job3_id) assert job3.id == job3_id job4 = add.queue(7, 8, depends_on=job3) assert job4.dependency.id == job3.id job5 = add.queue(9, 10) result = job5.perform() assert result == 19 queue = rq.get_queue() assert job1 in queue.jobs assert job2 in queue.jobs assert job3 in queue.jobs # job 4 is a dependency on job 3, so not queued yet assert job4 not in queue.jobs assert job3.result is None assert job4.result is None response = rq.get_worker('default').work(True) assert response assert job4.dependency.result == 11 assert job4.result == 15 assert len(queue.jobs) == 0
#!/usr/bin/env python # -*- coding: utf-8 -*- # Kyle Fitzsimmons, 2017 from flask_rq2 import RQ from dashboard.server import create_app app = create_app() rq = RQ(app) with app.app_context(): print('RQ data exporter running on: {}'.format(app.config['RQ_REDIS_URL'])) default_worker = rq.get_worker('default') default_worker.work()