Skip to content

Instantly share code, notes, and snippets.

@RafaAguilar
Forked from chadselph/flaskwithcron.py
Last active November 18, 2015 03:18
Show Gist options
  • Save RafaAguilar/12c44d90605873ee7d87 to your computer and use it in GitHub Desktop.
Save RafaAguilar/12c44d90605873ee7d87 to your computer and use it in GitHub Desktop.
flask with "cron"-like loop
from flask import Flask, render_template, jsonify, request
from threading import Timer, Thread
from time import sleep
app = Flask(__name__)
@app.route("/api/<method>")
def api(method):
data = {
'foo': 'bar',
'method': method
}
response = jsonify(data)
response.status_code = 200
return response
class Scheduler(object):
def __init__(self, sleep_time, function):
self.sleep_time = sleep_time
self.function = function
self._t = None
def start(self):
if self._t is None:
self._t = Timer(self.sleep_time, self._run)
self._t.start()
else:
raise Exception("this timer is already running")
def _run(self):
self.function()
self._t = Timer(self.sleep_time, self._run)
self._t.start()
def stop(self):
if self._t is not None:
self._t.cancel()
self._t = None
def query_db():
print "IM QUERYING A DB"
if __name__ == "__main__":
scheduler = Scheduler(5, query_db)
scheduler.start()
app.run(host='0.0.0.0', debug=True, port=1337, use_reloader=False)
scheduler.stop()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment