Mercurial > public > src > rhodecode
comparison pylons_app/lib/celerylib/tasks.py @ 541:fb0c3af6031b celery
Implemented locking for task, to prevent for running the same tasks,
moved out pidlock library. Added dirsize display
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Thu, 23 Sep 2010 01:08:33 +0200 |
parents | 2256c78afe53 |
children | ac32a026c306 |
comparison
equal
deleted
inserted
replaced
540:47f4c7ff245b | 541:fb0c3af6031b |
---|---|
1 from celery.decorators import task | 1 from celery.decorators import task |
2 from celery.task.sets import subtask | 2 from celery.task.sets import subtask |
3 from celeryconfig import PYLONS_CONFIG as config | 3 from celeryconfig import PYLONS_CONFIG as config |
4 from pylons.i18n.translation import _ | 4 from pylons.i18n.translation import _ |
5 from pylons_app.lib.celerylib import run_task | 5 from pylons_app.lib.celerylib import run_task, LockTask |
6 from pylons_app.lib.helpers import person | 6 from pylons_app.lib.helpers import person |
7 from pylons_app.lib.smtp_mailer import SmtpMailer | 7 from pylons_app.lib.smtp_mailer import SmtpMailer |
8 from pylons_app.lib.utils import OrderedDict | 8 from pylons_app.lib.utils import OrderedDict |
9 from operator import itemgetter | 9 from operator import itemgetter |
10 from vcs.backends.hg import MercurialRepository | 10 from vcs.backends.hg import MercurialRepository |
66 return settings | 66 return settings |
67 | 67 |
68 @task | 68 @task |
69 def whoosh_index(repo_location, full_index): | 69 def whoosh_index(repo_location, full_index): |
70 log = whoosh_index.get_logger() | 70 log = whoosh_index.get_logger() |
71 from pylons_app.lib.indexers import DaemonLock | 71 from pylons_app.lib.pidlock import DaemonLock |
72 from pylons_app.lib.indexers.daemon import WhooshIndexingDaemon, LockHeld | 72 from pylons_app.lib.indexers.daemon import WhooshIndexingDaemon, LockHeld |
73 try: | 73 try: |
74 l = DaemonLock() | 74 l = DaemonLock() |
75 WhooshIndexingDaemon(repo_location=repo_location)\ | 75 WhooshIndexingDaemon(repo_location=repo_location)\ |
76 .run(full_index=full_index) | 76 .run(full_index=full_index) |
78 return 'Done' | 78 return 'Done' |
79 except LockHeld: | 79 except LockHeld: |
80 log.info('LockHeld') | 80 log.info('LockHeld') |
81 return 'LockHeld' | 81 return 'LockHeld' |
82 | 82 |
83 | |
83 @task | 84 @task |
85 @LockTask('get_commits_stats') | |
84 def get_commits_stats(repo_name, ts_min_y, ts_max_y): | 86 def get_commits_stats(repo_name, ts_min_y, ts_max_y): |
85 author_key_cleaner = lambda k: person(k).replace('"', "") #for js data compatibilty | 87 author_key_cleaner = lambda k: person(k).replace('"', "") #for js data compatibilty |
86 | 88 |
87 from pylons_app.model.db import Statistics, Repository | 89 from pylons_app.model.db import Statistics, Repository |
88 log = get_commits_stats.get_logger() | 90 log = get_commits_stats.get_logger() |
90 commits_by_day_aggregate = {} | 92 commits_by_day_aggregate = {} |
91 repos_path = get_hg_ui_settings()['paths_root_path'].replace('*', '') | 93 repos_path = get_hg_ui_settings()['paths_root_path'].replace('*', '') |
92 repo = MercurialRepository(repos_path + repo_name) | 94 repo = MercurialRepository(repos_path + repo_name) |
93 | 95 |
94 skip_date_limit = True | 96 skip_date_limit = True |
95 parse_limit = 500 #limit for single task changeset parsing | 97 parse_limit = 350 #limit for single task changeset parsing |
96 last_rev = 0 | 98 last_rev = 0 |
97 last_cs = None | 99 last_cs = None |
98 timegetter = itemgetter('time') | 100 timegetter = itemgetter('time') |
99 | 101 |
100 sa = get_session() | 102 sa = get_session() |
203 sa.commit() | 205 sa.commit() |
204 except: | 206 except: |
205 log.error(traceback.format_exc()) | 207 log.error(traceback.format_exc()) |
206 sa.rollback() | 208 sa.rollback() |
207 return False | 209 return False |
208 | 210 |
211 run_task(get_commits_stats, repo_name, ts_min_y, ts_max_y) | |
212 | |
209 return True | 213 return True |
210 | 214 |
211 @task | 215 @task |
212 def reset_user_password(user_email): | 216 def reset_user_password(user_email): |
213 log = reset_user_password.get_logger() | 217 log = reset_user_password.get_logger() |