Пример #1
0
 def test_forget(self):
     b = DatabaseBackend()
     tid = gen_unique_id()
     b.mark_as_done(tid, {'foo': 'bar'})
     x = AsyncResult(tid)
     self.assertEqual(x.result.get('foo'), 'bar')
     x.forget()
     self.assertIsNone(x.result)
Пример #2
0
 def test_forget(self):
     b = DatabaseBackend()
     tid = gen_unique_id()
     b.mark_as_done(tid, {'foo': 'bar'})
     x = AsyncResult(tid)
     self.assertEqual(x.result.get('foo'), 'bar')
     x.forget()
     self.assertIsNone(x.result)
Пример #3
0
 def test_forget(self):
     b = DatabaseBackend()
     tid = gen_unique_id()
     b.mark_as_done(tid, {"foo": "bar"})
     x = AsyncResult(tid)
     self.assertEqual(x.result.get("foo"), "bar")
     x.forget()
     self.assertIsNone(x.result)
Пример #4
0
 def test_forget(self):
     b = DatabaseBackend()
     tid = gen_unique_id()
     b.mark_as_done(tid, {"foo": "bar"})
     x = AsyncResult(tid)
     self.assertEqual(x.result.get("foo"), "bar")
     x.forget()
     self.assertIsNone(x.result)
Пример #5
0
 def test_forget(self):
     b = DatabaseBackend(app=app)
     tid = gen_unique_id()
     b.mark_as_done(tid, {'foo': 'bar'})
     x = AsyncResult(tid)
     self.assertEqual(x.result.get('foo'), 'bar')
     x.forget()
     if celery.VERSION[0:3] == (3, 1, 10):
         # bug in 3.1.10 means result did not clear cache after forget.
         x._cache = None
     self.assertIsNone(x.result)
Пример #6
0
 def test_forget(self):
     b = DatabaseBackend(app=app)
     tid = gen_unique_id()
     b.mark_as_done(tid, {'foo': 'bar'})
     x = AsyncResult(tid)
     self.assertEqual(x.result.get('foo'), 'bar')
     x.forget()
     if celery.VERSION[0:3] == (3, 1, 10):
         # bug in 3.1.10 means result did not clear cache after forget.
         x._cache = None
     self.assertIsNone(x.result)
Пример #7
0
    def test_taskset_store(self):
        b = DatabaseBackend()
        tid = gen_unique_id()

        self.assertIsNone(b.restore_taskset(tid))

        result = {"foo": "baz", "bar": SomeClass(12345)}
        b.save_taskset(tid, result)
        rindb = b.restore_taskset(tid)
        self.assertIsNotNone(rindb)
        self.assertEqual(rindb.get("foo"), "baz")
        self.assertEqual(rindb.get("bar").data, 12345)
Пример #8
0
    def test_cleanup(self):
        b = DatabaseBackend()
        b.TaskModel._default_manager.all().delete()
        ids = [gen_unique_id() for _ in xrange(3)]
        for i, res in enumerate((16, 32, 64)):
            b.mark_as_done(ids[i], res)

        self.assertEqual(b.TaskModel._default_manager.count(), 3)

        then = now() - current_app.conf.CELERY_TASK_RESULT_EXPIRES * 2
        # Have to avoid save() because it applies the auto_now=True.
        b.TaskModel._default_manager.filter(task_id__in=ids[:-1]) \
                                    .update(date_done=then)

        b.cleanup()
        self.assertEqual(b.TaskModel._default_manager.count(), 1)
Пример #9
0
    def test_taskset_store(self):
        b = DatabaseBackend()
        tid = gen_unique_id()

        self.assertIsNone(b.restore_taskset(tid))

        result = {"foo": "baz", "bar": SomeClass(12345)}
        b.save_taskset(tid, result)
        rindb = b.restore_taskset(tid)
        self.assertIsNotNone(rindb)
        self.assertEqual(rindb.get("foo"), "baz")
        self.assertEqual(rindb.get("bar").data, 12345)
        b.delete_taskset(tid)
        self.assertIsNone(b.restore_taskset(tid))
Пример #10
0
    def test_group_store(self):
        b = DatabaseBackend()
        tid = gen_unique_id()

        self.assertIsNone(b.restore_group(tid))

        result = {'foo': 'baz', 'bar': SomeClass(12345)}
        b.save_group(tid, result)
        rindb = b.restore_group(tid)
        self.assertIsNotNone(rindb)
        self.assertEqual(rindb.get('foo'), 'baz')
        self.assertEqual(rindb.get('bar').data, 12345)
        b.delete_group(tid)
        self.assertIsNone(b.restore_group(tid))
Пример #11
0
    def test_group_store(self):
        b = DatabaseBackend()
        tid = gen_unique_id()

        self.assertIsNone(b.restore_group(tid))

        result = {'foo': 'baz', 'bar': SomeClass(12345)}
        b.save_group(tid, result)
        rindb = b.restore_group(tid)
        self.assertIsNotNone(rindb)
        self.assertEqual(rindb.get('foo'), 'baz')
        self.assertEqual(rindb.get('bar').data, 12345)
        b.delete_group(tid)
        self.assertIsNone(b.restore_group(tid))
Пример #12
0
    def test_backend(self):
        b = DatabaseBackend()
        tid = gen_unique_id()

        self.assertEqual(b.get_status(tid), states.PENDING)
        self.assertIsNone(b.get_result(tid))

        b.mark_as_done(tid, 42)
        self.assertEqual(b.get_status(tid), states.SUCCESS)
        self.assertEqual(b.get_result(tid), 42)

        tid2 = gen_unique_id()
        result = {'foo': 'baz', 'bar': SomeClass(12345)}
        b.mark_as_done(tid2, result)
        # is serialized properly.
        rindb = b.get_result(tid2)
        self.assertEqual(rindb.get('foo'), 'baz')
        self.assertEqual(rindb.get('bar').data, 12345)

        tid3 = gen_unique_id()
        try:
            raise KeyError('foo')
        except KeyError, exception:
            pass
Пример #13
0
    def test_cleanup(self):
        b = DatabaseBackend()
        b.TaskModel._default_manager.all().delete()
        ids = [gen_unique_id() for _ in xrange(3)]
        for i, res in enumerate((16, 32, 64)):
            b.mark_as_done(ids[i], res)

        self.assertEqual(b.TaskModel._default_manager.count(), 3)

        then = now() - current_app.conf.CELERY_TASK_RESULT_EXPIRES * 2
        # Have to avoid save() because it applies the auto_now=True.
        b.TaskModel._default_manager.filter(task_id__in=ids[:-1]) \
                                    .update(date_done=then)

        b.cleanup()
        self.assertEqual(b.TaskModel._default_manager.count(), 1)
Пример #14
0
 def on_success_patched(self, retval, task_id, args, kwargs):
     app = current_app._get_current_object()
     DatabaseBackend(app=app).store_result(task_id, retval, 'SUCCESS')
Пример #15
0
    def test_backend(self):
        b = DatabaseBackend()
        tid = gen_unique_id()

        self.assertEqual(b.get_status(tid), states.PENDING)
        self.assertIsNone(b.get_result(tid))

        b.mark_as_done(tid, 42)
        self.assertEqual(b.get_status(tid), states.SUCCESS)
        self.assertEqual(b.get_result(tid), 42)

        tid2 = gen_unique_id()
        result = {'foo': 'baz', 'bar': SomeClass(12345)}
        b.mark_as_done(tid2, result)
        # is serialized properly.
        rindb = b.get_result(tid2)
        self.assertEqual(rindb.get('foo'), 'baz')
        self.assertEqual(rindb.get('bar').data, 12345)

        tid3 = gen_unique_id()
        try:
            raise KeyError('foo')
        except KeyError, exception:
            pass
Пример #16
0
import traceback
from uuid import uuid4

from celery.app import default_app
from celery.task import task
from django.conf import settings
from django.core.mail import mail_admins
from django.template import loader
from django.utils import translation
from djcelery.backends.database import DatabaseBackend

from platforms.models import TradingAccount
from notification import models as notification


@task(backend=DatabaseBackend(default_app),
      acks_late=True,
      track_started=True,
      queue="reports")
def generate_report(context, template, decimal_separator, saved_report,
                    language, user):
    translation.activate(language)

    if context.get('account'):
        if isinstance(context['account'], int):
            context['account'] = TradingAccount(mt4_id=context['account'])
        api = context['account'].get_api("db")
    else:
        api = DatabaseAPI()

    try:
Пример #17
0
 def on_success_patched(self, retval, task_id, args, kwargs):
     DatabaseBackend().store_result(task_id, retval, 'SUCCESS')
Пример #18
0
 def failure(task_id, exception, args, kwargs, traceback, einfo, *margs,
             **mkwargs):
     app = current_app._get_current_object()
     DatabaseBackend(app=app).mark_as_failure(task_id, exception, traceback)
Пример #19
0
 def postrun(sender, task_id, task, args, kwargs, retval, *margs,
             **mkwargs):
     app = current_app._get_current_object()
     DatabaseBackend(app=app).mark_as_done(task_id, retval)