##// END OF EJS Templates
Added tag v1.5.3 for changeset 1a498b11f154
Added tag v1.5.3 for changeset 1a498b11f154

File last commit:

r3098:a5f0bc86 merge rhodecode-0.0.1.5.0 default
r3364:9c5bfcf6 default
Show More
__init__.py
128 lines | 3.8 KiB | text/x-python | PythonLexer
fidex corrent variables passed to dnconfig,...
r783 # -*- coding: utf-8 -*-
"""
code docs, updates
r903 rhodecode.lib.celerylib.__init__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fidex corrent variables passed to dnconfig,...
r783
celery libs for RhodeCode
source code cleanup: remove trailing white space, normalize file endings
r1203
fidex corrent variables passed to dnconfig,...
r783 :created_on: Nov 27, 2010
:author: marcink
2012 copyrights
r1824 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
fidex corrent variables passed to dnconfig,...
r783 :license: GPLv3, see COPYING for more details.
"""
fixed license issue #149
r1206 # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
fidex corrent variables passed to dnconfig,...
r783 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
fidex corrent variables passed to dnconfig,...
r783 # You should have received a copy of the GNU General Public License
fixed license issue #149
r1206 # along with this program. If not, see <http://www.gnu.org/licenses/>.
fidex corrent variables passed to dnconfig,...
r783
Celery is configured by the .ini files and run from paster now...
r776 import os
import sys
import socket
import traceback
import logging
fixes issue #197 Relative paths for pidlocks
r1354 from os.path import dirname as dn, join as jn
fixes #340 session cleanup for celery tasks
r1929 from pylons import config
Celery is configured by the .ini files and run from paster now...
r776
fidex corrent variables passed to dnconfig,...
r783 from hashlib import md5
from decorator import decorator
fixes for vcs 0.2.0and new slicing methods
r1082
Added VCS into rhodecode core for faster and easier deployments of new versions
r2007 from rhodecode.lib.vcs.utils.lazy import LazyProperty
Don't clear dbsessions when celery_eager is turned on
r2299 from rhodecode import CELERY_ON, CELERY_EAGER
utils/conf...
r2109 from rhodecode.lib.utils2 import str2bool, safe_str
fidex corrent variables passed to dnconfig,...
r783 from rhodecode.lib.pidlock import DaemonLock, LockHeld
fixes #340 session cleanup for celery tasks
r1929 from rhodecode.model import init_model
from rhodecode.model import meta
from rhodecode.model.db import Statistics, Repository, User
from sqlalchemy import engine_from_config
fidex corrent variables passed to dnconfig,...
r783
Another better solution for establishing connection with messaging broker in celery....
r1003 from celery.messaging import establish_connection
fixes for vcs 0.2.0and new slicing methods
r1082
renamed project to rhodecode
r547 log = logging.getLogger(__name__)
- refactoring to overcome poor usage of global pylons config...
r1723
renamed project to rhodecode
r547 class ResultWrapper(object):
def __init__(self, task):
self.task = task
Celery is configured by the .ini files and run from paster now...
r776
renamed project to rhodecode
r547 @LazyProperty
def result(self):
return self.task
moved locking of commit stats into the task itself to remove race conditions when lock was not removed before starting another task.
r1264
renamed project to rhodecode
r547 def run_task(task, *args, **kwargs):
Celery is configured by the .ini files and run from paster now...
r776 if CELERY_ON:
try:
fixed celery issues, default loader was not set as PylonsLoader
r1004 t = task.apply_async(args=args, kwargs=kwargs)
garden...
r1976 log.info('running task %s:%s' % (t.task_id, task))
Celery is configured by the .ini files and run from paster now...
r776 return t
moved locking of commit stats into the task itself to remove race conditions when lock was not removed before starting another task.
r1264
Celery is configured by the .ini files and run from paster now...
r776 except socket.error, e:
fixed Python2.5 socket error
r1414 if isinstance(e, IOError) and e.errno == 111:
Celery is configured by the .ini files and run from paster now...
r776 log.debug('Unable to connect to celeryd. Sync execution')
else:
log.error(traceback.format_exc())
except KeyError, e:
log.debug('Unable to connect to celeryd. Sync execution')
except Exception, e:
log.error(traceback.format_exc())
garden...
r1976 log.debug('executing task %s in sync mode' % task)
more error catching on celery run_task
r558 return ResultWrapper(task(*args, **kwargs))
renamed project to rhodecode
r547
moved locking of commit stats into the task itself to remove race conditions when lock was not removed before starting another task.
r1264 def __get_lockkey(func, *fargs, **fkwargs):
params = list(fargs)
params.extend(['%s-%s' % ar for ar in fkwargs.items()])
func_name = str(func.__name__) if hasattr(func, '__name__') else str(func)
fixes issue #197 Relative paths for pidlocks
r1354 lockkey = 'task_%s.lock' % \
Fixed problems with unicode cache keys in celery
r1611 md5(func_name + '-' + '-'.join(map(safe_str, params))).hexdigest()
moved locking of commit stats into the task itself to remove race conditions when lock was not removed before starting another task.
r1264 return lockkey
renamed project to rhodecode
r547 def locked_task(func):
def __wrapper(func, *fargs, **fkwargs):
moved locking of commit stats into the task itself to remove race conditions when lock was not removed before starting another task.
r1264 lockkey = __get_lockkey(func, *fargs, **fkwargs)
fixes #666 move lockkey path location to cache_dir to ensure this path is always writable for rhodecode server
r3055 lockkey_path = config['app_conf']['cache_dir']
fixes issue #197 Relative paths for pidlocks
r1354
garden...
r1976 log.info('running task with lockkey %s' % lockkey)
renamed project to rhodecode
r547 try:
fixes #258 RhodeCode 1.2 assumes egg folder is writable
r1540 l = DaemonLock(file_=jn(lockkey_path, lockkey))
renamed project to rhodecode
r547 ret = func(*fargs, **fkwargs)
l.release()
return ret
except LockHeld:
log.info('LockHeld')
Celery is configured by the .ini files and run from paster now...
r776 return 'Task with key %s already running' % lockkey
renamed project to rhodecode
r547
Celery is configured by the .ini files and run from paster now...
r776 return decorator(__wrapper, func)
fixes #340 session cleanup for celery tasks
r1929
def get_session():
if CELERY_ON:
engine = engine_from_config(config, 'sqlalchemy.db1.')
init_model(engine)
New repo model create function...
r2524 sa = meta.Session()
fixes #340 session cleanup for celery tasks
r1929 return sa
def dbsession(func):
def __wrapper(func, *fargs, **fkwargs):
try:
ret = func(*fargs, **fkwargs)
return ret
finally:
Don't clear dbsessions when celery_eager is turned on
r2299 if CELERY_ON and CELERY_EAGER is False:
cleanup task session only if celery is on
r1930 meta.Session.remove()
fixes #340 session cleanup for celery tasks
r1929
return decorator(__wrapper, func)