Flask-APScheduler is a Flask extension which adds support for the APScheduler.
|Version| |Coverage| |CodeClimate| |Travis|
You can install Flask-APScheduler via Python Package Index (PyPI_),::
pip install Flask-APScheduler
this tutorial <https://pythonspot.com/flask-web-app-with-python/>
_Flask-APScheduler
A basic example will looks like this.
.. code-block:: python
from flask import Flask
# import Flask-APScheduler
from flask_apscheduler import APScheduler
# set configuration values
class Config(object):
SCHEDULER_API_ENABLED = True
# create app
app = Flask(__name__)
app.config.from_object(Config())
# initialize scheduler
scheduler = APScheduler()
# if you don't wanna use a config, you can set options here:
# scheduler.api_enabled = True
scheduler.init_app(app)
scheduler.start()
if __name__ == '__main__':
app.run()
Jobs can be added to the scheduler when the app starts. They are created in decorated functions, which should be imported before app.run()
is called.
.. code-block:: python
# interval example
@scheduler.task('interval', id='do_job_1', seconds=30, misfire_grace_time=900)
def job1():
print('Job 1 executed')
# cron examples
@scheduler.task('cron', id='do_job_2', minute='*')
def job2():
print('Job 2 executed')
@scheduler.task('cron', id='do_job_3', week='*', day_of_week='sun')
def job3():
print('Job 3 executed')
Jobs can also be added after you app is running
.. code-block:: python
scheduler.add_job(**args)
If you wish to use anything from your Flask app context inside the job you can use something like this
.. code-block:: python
def blah():
with scheduler.app.app_context():
# do stuff
All scheduler events can be used to trigger logging functions. See APScheduler <https://apscheduler.readthedocs.io/en/stable/userguide.html#scheduler-events>
_ for a list of available events.
If you are using your Flask app context inside of a function triggered by a scheduler event can include something like this
.. code-block:: python
def blah():
with scheduler.app.app_context():
# do stuff
scheduler.add_listener(blah, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR)
Flask-APScheduler comes with a build-in API. This can be enabled/disabled in your flask configuration.
.. code-block:: python
SCHEDULER_API_ENABLED: True
Other commands can be passed to the scheduler and are rather self explainatory:
Configuration options specific to Flask-APScheduler
:
.. code-block:: python
SCHEDULER_API_ENABLED: <True or False>
Other configuration options are included from APScheduler <https://apscheduler.readthedocs.io/en/stable/userguide.html#configuring-the-scheduler>
_
When running Flask-APScheduler on a wsgi process only 1 worker should be enabled. APScheduler 3.0 will only work with a single worker process. Jobstores cannot be shared among multiple schedulers.
See APScheduler's <https://apscheduler.readthedocs.io/en/stable/>
_ documentation for further help.
Take a look at the examples_ to see how it works.
Also take a look at COMMON-ISSUES.md <https://github.com/viniciuschiele/flask-apscheduler/blob/master/COMMON-ISSUES.md>
_ for help.
Please use the Issues_ for feature requests and troubleshooting usage.
.. |Version| image:: https://img.shields.io/pypi/v/flask-apscheduler.svg :target: https://pypi.python.org/pypi/Flask-APScheduler
.. |Coverage| image:: https://codecov.io/github/viniciuschiele/flask-apscheduler/coverage.svg :target: https://codecov.io/github/viniciuschiele/flask-apscheduler
.. |Travis| image:: https://travis-ci.org/viniciuschiele/flask-apscheduler.svg :target: https://travis-ci.org/viniciuschiele/flask-apscheduler
.. |CodeClimate| image:: https://codeclimate.com/github/viniciuschiele/flask-apscheduler/badges/gpa.svg :target: https://codeclimate.com/github/viniciuschiele/flask-apscheduler
.. _examples: https://github.com/viniciuschiele/flask-apscheduler/tree/master/examples
.. _PyPi: https://pypi.python.org/pypi/Flask-APScheduler
.. _Issues: https://github.com/viniciuschiele/flask-apscheduler/issues
.. _CommonIssues: