示例#1
0
 def unlock_chord(group_id, callback, interval=1, propagate=False,
         max_retries=None, result=None):
     result = _res.GroupResult(group_id, map(_res.AsyncResult, result))
     j = result.join_native if result.supports_native_join else result.join
     if result.ready():
         subtask(callback).delay(j(propagate=propagate))
     else:
         unlock_chord.retry(countdown=interval, max_retries=max_retries)
示例#2
0
 def unlock_chord(group_id, callback, interval=None, propagate=False,
         max_retries=None, result=None, Result=_res.AsyncResult):
     if interval is None:
         interval = unlock_chord.default_retry_delay
     result = _res.GroupResult(group_id, [Result(r) for r in result])
     j = result.join_native if result.supports_native_join else result.join
     if result.ready():
         subtask(callback).delay(j(propagate=propagate))
     else:
         unlock_chord.retry(countdown=interval, max_retries=max_retries)
示例#3
0
 def test_save_restore_delete_group(self):
     group_id = uuid()
     result_ids = [uuid() for i in range(10)]
     results = list(map(result.AsyncResult, result_ids))
     res = result.GroupResult(group_id, results)
     res.save(backend=self.b)
     saved = result.GroupResult.restore(group_id, backend=self.b)
     assert saved.results == results
     assert saved.id == group_id
     saved.delete(backend=self.b)
     assert result.GroupResult.restore(group_id, backend=self.b) is None
示例#4
0
 def test_save_restore_delete_group(self):
     backend = CacheBackend(app=app)
     group_id = gen_unique_id()
     subtask_ids = [gen_unique_id() for i in range(10)]
     subtasks = list(map(result.AsyncResult, subtask_ids))
     res = result.GroupResult(group_id, subtasks)
     res.save(backend=backend)
     saved = result.GroupResult.restore(group_id, backend=backend)
     self.assertListEqual(saved.subtasks, subtasks)
     self.assertEqual(saved.id, group_id)
     saved.delete(backend=backend)
     self.assertIsNone(result.GroupResult.restore(group_id,
                                                  backend=backend))
示例#5
0
def bulkprogress():
    res = {}
    if request.method == 'GET':
        tid = request.args.get('id')
        gr = cresult.GroupResult()
        gt = gr.restore(tid, backend=celery.backend)
        for i in gt:
            if not i.state in ('SUCCESS', 'FAILURE'):
                res = {"url": "/whois/bulk/progress?id=" + tid}
                time.sleep(1)
                return redirect(res["url"])
            else:
                result = i.get()
                ip = result["query"]
                res[ip] = result
    return jsonify(res)