| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | # -*- coding: utf-8 -*-from __future__ import absolute_import, print_function, unicode_literalsimport osimport sysimport signalfrom time import sleepfrom celery import Celeryfrom celery import signalsfrom celery.bin.base import Optionfrom celery.exceptions import SoftTimeLimitExceededfrom .templates import use_template, template_namesclass App(Celery):    template_selected = False    def __init__(self, *args, **kwargs):        self.template = kwargs.pop('template', None)        super(App, self).__init__(*args, **kwargs)        self.user_options['preload'].add(            Option(                '-t', '--template', default='default',                help='Configuration template to use: {0}'.format(                    template_names(),                ),            )        )        signals.user_preload_options.connect(self.on_preload_parsed)        self.after_configure = None    def on_preload_parsed(self, options=None, **kwargs):        self.use_template(options['template'])    def use_template(self, name='default'):        if self.template_selected:            raise RuntimeError('App already configured')        use_template(self, name)        self.template_selected = True    def _get_config(self):        ret = super(App, self)._get_config()        if self.after_configure:            self.after_configure(ret)        return ret    def on_configure(self):        if not self.template_selected:            self.use_template('default')app = App('stress', set_as_current=False)@app.taskdef _marker(s, sep='-'):    print('{0} {1} {2}'.format(sep * 3, s, sep * 3))@app.taskdef add(x, y):    return x + y@app.taskdef xsum(x):    return sum(x)@app.taskdef any_(*args, **kwargs):    wait = kwargs.get('sleep')    if wait:        sleep(wait)@app.taskdef exiting(status=0):    sys.exit(status)@app.taskdef kill(sig=signal.SIGKILL):    os.kill(os.getpid(), sig)@app.taskdef sleeping(i, **_):    sleep(i)@app.taskdef sleeping_ignore_limits(i):    try:        sleep(i)    except SoftTimeLimitExceeded:        sleep(i)@app.task(bind=True)def retries(self):    if not self.request.retries:        raise self.retry(countdown=1)    return 10@app.taskdef unicode():    print('hiöäüß')@app.taskdef segfault():    import ctypes    ctypes.memset(0, 0, 1)    assert False, 'should not get here'def marker(s, sep='-'):    print('{0}{1}'.format(sep, s))    while True:        try:            return _marker.delay(s, sep)        except Exception as exc:            print("Retrying marker.delay(). It failed to start: %s" % exc)
 |