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)
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)
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
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))
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)