Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/scripts/crontab/make-crons.py
blob: eeac10a687a1e11348a92fcb424a4d1f0d05e02c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/usr/bin/env python
import os
from string import Template

CRONS = {}

COMMON = {
    'MANAGE': '/data/virtualenvs/zamboni/bin/python manage.py',
}

CRONS['preview'] = {
    'ZAMBONI': '/data/amo_python/src/preview/zamboni',
    'REMORA': 'cd /data/amo/www/addons.mozilla.org-preview/bin',
    'Z_CRON': 'cd $ZAMBONI; $MANAGE cron',
}

CRONS['prod'] = {
    'ZAMBONI': '/data/amo_python/src/prod/zamboni',
    'REMORA': 'apache cd /data/amo/www/addons.mozilla.org-remora/bin',
    'Z_CRON': 'apache cd $ZAMBONI; $MANAGE cron',
}

# Update each dict with the values from common.
for key, dict_ in CRONS.items():
    dict_.update(COMMON)

# Do any interpolation inside the keys.
for dict_ in CRONS.values():
    for key, val in dict_.items():
        dict_[key] = Template(val).substitute(dict_)


cron = """\
#
# !!AUTO-GENERATED!!  Edit scripts/crontab/make-crons.py instead.
#

MAILTO=amo-developers@mozilla.org

HOME = /tmp

# Every minute!
* * * * * $Z_CRON fast_current_version
* * * * * $Z_CRON migrate_collection_users

# Every 30 minutes.
*/30 * * * * $Z_CRON update_addons_current_version

#once per hour
5 * * * * $Z_CRON update_collections_subscribers
10 * * * * $REMORA; php -f maintenance.php blog
15 * * * * $REMORA; php -f update-search-views.php
20 * * * * $Z_CRON addon_last_updated
25 * * * * $Z_CRON update_collections_votes
30 * * * * $REMORA; php -f maintenance.php l10n_stats
35 * * * * $REMORA; php -f maintenance.php l10n_rss
40 * * * * $Z_CRON fetch_ryf_blog
45 * * * * $Z_CRON update_addon_appsupport


#every 3 hours
20 */3 * * * $REMORA; php -f compatibility_report.php
20 */3 * * * $REMORA; /usr/bin/python26 maintenance.py collection_addon_count

#twice per day
25 1,13 * * * $REMORA; /usr/bin/python26 import-personas.py
25 3,15 * * * $Z_CRON update_addons_collections_downloads
25 4,16 * * * $Z_CRON update_collections_total

#once per day
30 1 * * * $Z_CRON update_user_ratings
30 2 * * * $Z_CRON addon_reviews_ratings
30 3 * * * $MANAGE cleanup
30 4 * * * $REMORA; php -f maintenance.php gc
30 5 * * * $REMORA; php -f maintenance.php expired_resetcode
30 6 * * * $REMORA; php -f maintenance.php category_totals
30 7 * * * $REMORA; php -f maintenance.php collection_subscribers
30 8 * * * $REMORA; /usr/bin/python26 maintenance.py personas_adu
30 9 * * * $REMORA; /usr/bin/python26 maintenance.py share_count_totals
30 10 * * * $REMORA; /usr/bin/python26 build-recommendations.py addons
30 16 * * * $Z_CRON collection_meta

#Once per day after 2100 PST (after metrics is done)
35 21 * * * $Z_CRON update_addon_download_totals
40 21 * * * $REMORA; /usr/bin/python26 maintenance.py weekly
35 22 * * * $Z_CRON update_global_totals
40 22 * * * $Z_CRON update_addon_average_daily_users

# Once per week
45 23 * * 4 $REMORA; php -f maintenance.php unconfirmed

MAILTO=root
"""


def main():
    for key, vals in CRONS.items():
        path = os.path.join(os.path.dirname(__file__), key)
        open(path, 'w').write(Template(cron).substitute(vals))


if __name__ == '__main__':
    main()