{ "info": { "author": "Selwin Ong", "author_email": "selwin.ong@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "============\nRQ Scheduler\n============\n\n`RQ Scheduler `_ is a small package that\nadds job scheduling capabilities to `RQ `_,\na `Redis `_ based Python queuing library.\n\n.. image:: https://travis-ci.org/rq/rq-scheduler.svg?branch=master\n :target: https://travis-ci.org/rq/rq-scheduler\n\n============\nRequirements\n============\n\n* `RQ`_\n\n============\nInstallation\n============\n\nYou can install `RQ Scheduler`_ via pip::\n\n pip install rq-scheduler\n\nOr you can download the latest stable package from `PyPI `_.\n\n=====\nUsage\n=====\n\nSchedule a job involves doing two different things:\n\n1. Putting a job in the scheduler\n2. Running a scheduler that will move scheduled jobs into queues when the time comes\n\n----------------\nScheduling a Job\n----------------\n\nThere are two ways you can schedule a job. The first is using RQ Scheduler's ``enqueue_at``\n\n.. code-block:: python\n\n from redis import Redis\n from rq import Queue\n from rq_scheduler import Scheduler\n from datetime import datetime\n\n scheduler = Scheduler(connection=Redis()) # Get a scheduler for the \"default\" queue\n\n # You can also instantiate a Scheduler using an RQ Queue\n queue = Queue('foo', connection=Redis())\n scheduler = Scheduler(queue=queue)\n\n # Puts a job into the scheduler. The API is similar to RQ except that it\n # takes a datetime object as first argument. So for example to schedule a\n # job to run on Jan 1st 2020 we do:\n scheduler.enqueue_at(datetime(2020, 1, 1), func) # Date time should be in UTC\n\n # Here's another example scheduling a job to run at a specific date and time (in UTC),\n # complete with args and kwargs.\n scheduler.enqueue_at(datetime(2020, 1, 1, 3, 4), func, foo, bar=baz)\n\n\nThe second way is using ``enqueue_in``. Instead of taking a ``datetime`` object,\nthis method expects a ``timedelta`` and schedules the job to run at\nX seconds/minutes/hours/days/weeks later. For example, if we want to monitor how\npopular a tweet is a few times during the course of the day, we could do something like\n\n.. code-block:: python\n\n from datetime import timedelta\n\n # Schedule a job to run 10 minutes, 1 hour and 1 day later\n scheduler.enqueue_in(timedelta(minutes=10), count_retweets, tweet_id)\n scheduler.enqueue_in(timedelta(hours=1), count_retweets, tweet_id)\n scheduler.enqueue_in(timedelta(days=1), count_retweets, tweet_id)\n\n**IMPORTANT**: You should always use UTC datetime when working with `RQ Scheduler`_.\n\n------------------------\nPeriodic & Repeated Jobs\n------------------------\n\nAs of version 0.3, `RQ Scheduler`_ also supports creating periodic and repeated jobs.\nYou can do this via the ``schedule`` method. Note that this feature needs\n`RQ`_ >= 0.3.1.\n\nThis is how you do it\n\n.. code-block:: python\n\n scheduler.schedule(\n scheduled_time=datetime.utcnow(), # Time for first execution, in UTC timezone\n func=func, # Function to be queued\n args=[arg1, arg2], # Arguments passed into function when executed\n kwargs={'foo': 'bar'}, # Keyword arguments passed into function when executed\n interval=60, # Time before the function is called again, in seconds\n repeat=10, # Repeat this number of times (None means repeat forever)\n meta={'foo': 'bar'} # Arbitrary pickleable data on the job itself\n )\n\n**IMPORTANT NOTE**: If you set up a repeated job, you must make sure that you\neither do not set a `result_ttl` value or you set a value larger than the interval.\nOtherwise, the entry with the job details will expire and the job will not get re-scheduled.\n\n------------------------\nCron Jobs\n------------------------\n\nAs of version 0.6.0, `RQ Scheduler`_ also supports creating Cron Jobs, which you can use for\nrepeated jobs to run periodically at fixed times, dates or intervals, for more info check\nhttps://en.wikipedia.org/wiki/Cron. You can do this via the ``cron`` method.\n\nThis is how you do it\n\n.. code-block:: python\n\n scheduler.cron(\n cron_string, # A cron string (e.g. \"0 0 * * 0\")\n func=func, # Function to be queued\n args=[arg1, arg2], # Arguments passed into function when executed\n kwargs={'foo': 'bar'}, # Keyword arguments passed into function when executed\n repeat=10, # Repeat this number of times (None means repeat forever)\n queue_name=queue_name, # In which queue the job should be put in\n meta={'foo': 'bar'} # Arbitrary pickleable data on the job itself\n )\n\n-------------------------\nRetrieving scheduled jobs\n-------------------------\n\nSometimes you need to know which jobs have already been scheduled. You can get a\nlist of enqueued jobs with the ``get_jobs`` method\n\n.. code-block:: python\n\n list_of_job_instances = scheduler.get_jobs()\n\nIn it's simplest form (as seen in the above example) this method returns a list\nof all job instances that are currently scheduled for execution.\n\nAdditionally the method takes two optional keyword arguments ``until`` and\n``with_times``. The first one specifies up to which point in time scheduled jobs\nshould be returned. It can be given as either a datetime / timedelta instance\nor an integer denoting the number of seconds since epoch (1970-01-01 00:00:00).\nThe second argument is a boolen that determines whether the scheduled execution\ntime should be returned along with the job instances.\n\nExample\n\n.. code-block:: python\n\n # get all jobs until 2012-11-30 10:00:00\n list_of_job_instances = scheduler.get_jobs(until=datetime(2012, 10, 30, 10))\n\n # get all jobs for the next hour\n list_of_job_instances = scheduler.get_jobs(until=timedelta(hours=1))\n\n # get all jobs with execution times\n jobs_and_times = scheduler.get_jobs(with_times=True)\n # returns a list of tuples:\n # [(, datetime.datetime(2012, 11, 25, 12, 30)), ...]\n\n------------------------------\nChecking if a job is scheduled\n------------------------------\n\nYou can check whether a specific job instance or job id is scheduled for\nexecution using the familiar python ``in`` operator\n\n.. code-block:: python\n\n if job_instance in scheduler:\n # Do something\n # or\n if job_id in scheduler:\n # Do something\n\n---------------\nCanceling a job\n---------------\n\nTo cancel a job, simply pass a ``Job`` or a job id to ``scheduler.cancel``\n\n.. code-block:: python\n\n scheduler.cancel(job)\n\nNote that this method returns ``None`` whether the specified job was found or not.\n\n---------------------\nRunning the scheduler\n---------------------\n\n`RQ Scheduler`_ comes with a script ``rqscheduler`` that runs a scheduler\nprocess that polls Redis once every minute and move scheduled jobs to the\nrelevant queues when they need to be executed\n\n.. code-block:: bash\n\n # This runs a scheduler process using the default Redis connection\n rqscheduler\n\nIf you want to use a different Redis server you could also do\n\n.. code-block:: bash\n\n rqscheduler --host localhost --port 6379 --db 0\n\nThe script accepts these arguments:\n\n* ``-H`` or ``--host``: Redis server to connect to\n* ``-p`` or ``--port``: port to connect to\n* ``-d`` or ``--db``: Redis db to use\n* ``-P`` or ``--password``: password to connect to Redis\n* ``-b`` or ``--burst``: runs in burst mode (enqueue scheduled jobs whose execution time is in the past and quit)\n* ``-i INTERVAL`` or ``--interval INTERVAL``: How often the scheduler checks for new jobs to add to the queue (in seconds, can be floating-point for more precision).\n* ``-j`` or ``--job-class``: specify custom job class for rq to use (python module.Class)\n* ``-q`` or ``--queue-class``: specify custom queue class for rq to use (python module.Class)\n\nThe arguments pull default values from environment variables with the\nsame names but with a prefix of ``RQ_REDIS_``.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/as3445/rq-scheduler-bcfg", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "rq-scheduler-bcfg", "package_url": "https://pypi.org/project/rq-scheduler-bcfg/", "platform": "", "project_url": "https://pypi.org/project/rq-scheduler-bcfg/", "project_urls": { "Homepage": "https://github.com/as3445/rq-scheduler-bcfg" }, "release_url": "https://pypi.org/project/rq-scheduler-bcfg/0.8.4/", "requires_dist": null, "requires_python": "", "summary": "Provides job scheduling capabilities to RQ (Redis Queue)", "version": "0.8.4" }, "last_serial": 3877166, "releases": { "0.8.4": [ { "comment_text": "", "digests": { "md5": "c250eaa8b8c91619d974b6b1fe632264", "sha256": "92244fbc4a1414933d0973f998ae17920c1284e483622b7f5874813a34c237b8" }, "downloads": -1, "filename": "rq-scheduler-bcfg-0.8.4.tar.gz", "has_sig": false, "md5_digest": "c250eaa8b8c91619d974b6b1fe632264", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11073, "upload_time": "2018-05-18T18:13:10", "url": "https://files.pythonhosted.org/packages/f1/9b/2404ea0206f60f345c789332838591959bfbbc0365d6927d3f52129ecb73/rq-scheduler-bcfg-0.8.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c250eaa8b8c91619d974b6b1fe632264", "sha256": "92244fbc4a1414933d0973f998ae17920c1284e483622b7f5874813a34c237b8" }, "downloads": -1, "filename": "rq-scheduler-bcfg-0.8.4.tar.gz", "has_sig": false, "md5_digest": "c250eaa8b8c91619d974b6b1fe632264", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11073, "upload_time": "2018-05-18T18:13:10", "url": "https://files.pythonhosted.org/packages/f1/9b/2404ea0206f60f345c789332838591959bfbbc0365d6927d3f52129ecb73/rq-scheduler-bcfg-0.8.4.tar.gz" } ] }