Analitycs

Показаны сообщения с ярлыком cron. Показать все сообщения
Показаны сообщения с ярлыком cron. Показать все сообщения

вторник, 11 марта 2014 г.

logrotate срабатывает в 6 часов утра

Проблема - неверное время ротирования логов

Причина - crontab по умолчанию стартует в 6 часов с копейками

Лечение

sudo mv /etc/cron.daily/logrotate /etc/logrotate.cronjob
sudo echo "0 0 * * * root /etc/logrotate.cronjob" >> /etc/crontab
sudo service cron restart

пятница, 10 февраля 2012 г.

Как запускать периодические задачи на Tornado? PeriodicCallback!

Продолжая тему периодических задач в Twisted, в Tornado это делается немного по другому - с помощью специального tornado.ioloop.PeriodicCallback.

Примерчик - если кому пригодится

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tornado.web
import tornado.httpserver
import tornado.ioloop

PERIOD = 30 # в минутах

class MyApplication(tornado.web.Application):

  def period_run(self):
    # чего-то тут делаем
    pass

...

app = MyApplication(handlers=urls, **settings)

http_server = tornado.httpserver.HTTPServer(app, xheaders=True)
 
loop = tornado.ioloop.IOLoop.instance()
period_cbk = tornado.ioloop.PeriodicCallback(app.period_run, 1000*60*PERIOD, loop)

period_cbk.start()

loop.start()

понедельник, 14 ноября 2011 г.

Как реализовать периодические задачи в Twisted? (cron vs LoopingCall)

Первое что делают все программисты на Twisted, чтобы сделать периодические задачи - это лезут в cron. Я сам так раньше делал - и, к сожалению, не было никого рядом, чтобы стукнуть меня бамбуковой палкой по рукам.

Есть же методически грамотное, ВСТРОЕННОЕ решение - и нашел я его сегодня случайно, когда искал совершенно другую вещь.

from twisted.internet.task import LoopingCall

#==============================================================================
class MySuperServer(MyServer, twisted.web.server.Site):
    '''
    мой собственный веб-сервер, с блекджеком и шлюхами ;-)
    '''

    def __init__(self):
        lp = LoopingCall(self.checkStatus)
        lp.start(1.0) # период в секундах    

    def checkStatus(self):
        #self._log('Looping call')
        pass