标签:
https://groups.google.com/forum/#!topic/python-tornado/KEmAg97zUg8
鉴于不是所有人都能跨越GFW,摘抄如下:
Scheduled jobs in Tornado
7 名作者发布了 9 个帖子
Robert Wikman
12/2/6
将帖子翻译为中文
Hello,
I‘m trying to figure out how to write a scheduler to run jobs at
specific times, i.e. every day at 5 PM, in Tornado.
Is there any simple way to accomplish this?
Regards,
Robert
Christopher Allick
12/2/7
将帖子翻译为中文
not sure if this helps, but you could create a cron job that hits a webservice and setup a handler in your application. you might want to protect the call.
- 隐藏引用文字 -
On Feb 6, 2012, at 9:34 AM, rbw wrote:
> Hello,
>
> I‘m trying to figure out how to write a scheduler to run jobs at
> specific times, i.e. every day at 5 PM, in Tornado.
> Is there any simple way to accomplish this?
>
> Regards,
> Robert
>
bergundy
12/2/7
将帖子翻译为中文
Wasn‘t planning on releasing it, but what the heck :)
https://github.com/bergundy/tornado_crontab
- 隐藏引用文字 -
On Mon, Feb 6, 2012 at 7:04 PM, Christopher Allick <chris...@gmail.com> wrote:
not sure if this helps, but you could create a cron job that hits a webservice and setup a handler in your application. you might want to protect the call.
On Feb 6, 2012, at 9:34 AM, rbw wrote:
> Hello,
>
> I‘m trying to figure out how to write a scheduler to run jobs at
> specific times, i.e. every day at 5 PM, in Tornado.
> Is there any simple way to accomplish this?
>
> Regards,
> Robert
>
wataka
12/2/7
将帖子翻译为中文
I use APscheduler, http://packages.python.org/APScheduler/
On Feb 6, 6:31 pm, Roey Berman <roey.ber...@gmail.com> wrote:
> Wasn‘t planning on releasing it, but what the heck :)
>
> https://github.com/bergundy/tornado_crontab
>
- 显示引用文字 -
Aleksandar Radulovic
12/2/7
Re: [tornado] Re: Scheduled jobs in Tornado
将帖子翻译为中文
How about just using celery? It works like a charm and its a proven
and robust solution..
- 显示引用文字 -
--
a lex 13 x
http://a13x.net | @a13xnet
Jason
12/2/7
将帖子翻译为中文
I‘m sorry.I don‘t know.
- 隐藏引用文字 -
On Feb 6, 10:34 pm, rbw <r...@vault13.org> wrote:
> Hello,
>
> I‘m trying to figure out how to write a scheduler to run jobs at
> specific times, i.e. every day at 5 PM, in Tornado.
> Is there any simple way to accomplish this?
>
> Regards,
> Robert
Robert Wikman
12/2/7
将帖子翻译为中文
Forgot to mention that I was at the time of my first post looking for
a solution using the Tornado built-in functionality, i.e.
PeriodCallback or add_timeout.
Didn‘t even think about using a separate module for this.
Thank you everyone.
Regards,
Robert
On Feb 6, 7:49 pm, Aleksandar Radulovic <a...@a13x.net> wrote:
> How about just using celery? It works like a charm and its a proven
> and robust solution..
>
>
>
>
>
>
>
>
>
> On Mon, Feb 6, 2012 at 7:05 PM, wataka <nhy...@googlemail.com> wrote:
> > I use APscheduler,http://packages.python.org/APScheduler/
- 显示引用文字 -
bergundy
12/2/8
Re: [tornado] Re: Scheduled jobs in Tornado
将帖子翻译为中文
@wataka - Thanks for the APScheduler link, I was gonna write tests for my crontab project but now that I found out about that project I‘m just using apscheduler.triggers.cron.CronTrigger
I posted a gist if anyone is interested.
http://tornadogists.org/1770500/
- 显示引用文字 -
whitemice
12/2/11
Re: [tornado] Re: Scheduled jobs in Tornado
将帖子翻译为中文
On Mon, 2012-02-06 at 10:05 -0800, wataka wrote:
> I use APscheduler, http://packages.python.org/APScheduler/
+1 APschedular
Actually I run APschedular in a process that uses AMQ to send messages
at designated times; then the apps/services just process the messages.
--
System & Network Administrator [ LPI & NCLA ]
<http://www.whitemiceconsulting.com>
OpenGroupware Developer <http://www.opengroupware.us>
Adam Tauno Williams
http://tornadogists.com/1770500/
import re
import itertools
import logging
from apscheduler.triggers.cron import CronTrigger
from tornado.ioloop import IOLoop
from datetime import datetime
class CronCallback(object):
"""Schedules the given callback to be called periodically.
The callback is called according to the schedule argument.
`start` must be called after the CronCallback is created.
If schedule is a string it should contain 7 cron fields: (‘second‘, ‘minute‘, ‘hour‘, ‘day‘, ‘month‘, ‘year‘, ‘day_of_week‘).
If schedule is a dict it must contain at least one of the fields above.
>>> cron1 = CronCallback(lambda: logging.error(‘x‘), dict(seconds = 1)) # logs ‘x‘ every second
>>> cron2 = CronCallback(lambda: IOLoop.instance().stop(), ‘*/5 * * * * * *‘) # stops ioloop every 5 seconds
>>> cron1.start()
>>> cron2.start()
>>> IOLoop.instance().start()
"""
_split_re = re.compile("\s+")
_sched_seq = (‘second‘, ‘minute‘, ‘hour‘, ‘day‘, ‘month‘, ‘year‘, ‘day_of_week‘)
def __init__(self, callback, schedule, io_loop=None):
if isinstance(schedule, basestring):
splitted = self._split_re.split(schedule)
if len(splitted) < 7:
raise TypeError("‘schedule‘ argument pattern mismatch")
schedule = dict(itertools.izip(self._sched_seq, splitted))
self.callback = callback
self._trigger = CronTrigger(**schedule)
self.io_loop = io_loop or IOLoop.instance()
self._running = False
self._timeout = None
def start(self):
"""Starts the timer."""
self._running = True
self._schedule_next()
def stop(self):
"""Stops the timer."""
self._running = False
if self._timeout is not None:
self.io_loop.remove_timeout(self._timeout)
self._timeout = None
def _run(self):
if not self._running: return
try:
self.callback()
except Exception:
logging.error("Error in cron callback", exc_info=True)
self._schedule_next()
def _schedule_next(self):
if self._running:
self._timeout = self.io_loop.add_timeout(self._next_timeout, self._run)
@property
def _next_timeout(self):
d = datetime.now()
return self._trigger.get_next_fire_time(d) - d
if __name__ == "__main__":
import doctest
doctest.testmod()
标签:
原文地址:http://www.cnblogs.com/Tommy-Yu/p/4556044.html