def api_active_tasks(): rpc = app.config['scheduler_rpc'] taskdb = app.config['taskdb'] project = request.args.get('project', "") limit = int(request.args.get('limit', 100)) try: updatetime_tasks = rpc.get_active_tasks(project, limit) except socket.error as e: app.logger.warning('connect to scheduler rpc error: %r', e) return json.dumps({ 'Status': 3, 'Message': 'connect to scheduler rpc error' }), 200, cors_resp_header tasks = {} result = [] for updatetime, task in sorted(updatetime_tasks, key=lambda x: x[0]): key = '%(project)s:%(taskid)s' % task task['updatetime'] = updatetime task['updatetime_text'] = utils.format_date(updatetime) if key in tasks and tasks[key].get('status', None) != taskdb.ACTIVE: result.append(tasks[key]) tasks[key] = task result.extend(tasks.values()) return json.dumps({'Status': 1, 'Result': result}), 200, cors_resp_header
def test_format_data(self): now = time.time() self.assertEqual(utils.format_date(now - 30), '30 seconds ago') self.assertEqual(utils.format_date(now - 60), '1 minute ago') self.assertEqual(utils.format_date(now - 2*60), '2 minutes ago') self.assertEqual(utils.format_date(now - 30*60), '30 minutes ago') self.assertEqual(utils.format_date(now - 60*60), '1 hour ago') self.assertEqual(utils.format_date(now - 12*60*60), '12 hours ago') self.assertIn('yesterday at', utils.format_date(now - 24*60*60))
def test_format_data(self): now = time.time() self.assertEqual(utils.format_date(now - 30), '30 seconds ago') self.assertEqual(utils.format_date(now - 60), '1 minute ago') self.assertEqual(utils.format_date(now - 2 * 60), '2 minutes ago') self.assertEqual(utils.format_date(now - 30 * 60), '30 minutes ago') self.assertEqual(utils.format_date(now - 60 * 60), '1 hour ago') self.assertEqual(utils.format_date(now - 12 * 60 * 60), '12 hours ago') self.assertIn('yesterday at', utils.format_date(now - 24 * 60 * 60))
def api_task(taskid): if ':' not in taskid: return json.dumps({ 'Status': 3, 'Message': "bad project:task_id format" }), 200, cors_resp_header project, taskid = taskid.split(':', 1) taskdb = app.config['taskdb'] task = taskdb.get_task(project, taskid) if not task: return json.dumps({ 'Status': 3, 'Message': "task not found" }), 200, cors_resp_header task['status_string'] = app.config['taskdb'].status_to_string( task['status']) if "lastcrawltime" in task.keys(): task["lastcrawltime_text"] = utils.format_date(task["lastcrawltime"]) if "updatetime" in task.keys(): task["updatetime_text"] = utils.format_date(task["updatetime"]) if "exetime" in task.get("schedule", {}).keys(): task["schedule"]["exetime_text"] = utils.format_date( task["schedule"]["exetime"]) resultdb = app.config['resultdb'] result = {} if resultdb: result = resultdb.get(project, taskid) if "result" in task.get("track", {}).get("process", {}).keys(): task["result"] = result return json.dumps({'Status': 1, 'Result': task}), 200, cors_resp_header
def active_tasks(): rpc = app.config['scheduler_rpc'] taskdb = app.config['taskdb'] limit = int(request.args.get('limit', 100)) tasks = rpc.get_active_tasks(limit) result = [] for updatetime, task in tasks: task['updatetime'] = updatetime task['updatetime_text'] = utils.format_date(updatetime) if 'status' in task: task['status_text'] = taskdb.status_to_string(task['status']) result.append(task) return json.dumps(result), 200, {'Content-Type': 'application/json'}
def active_tasks(): rpc = app.config['scheduler_rpc'] taskdb = app.config['taskdb'] project = request.args.get('project', "") limit = int(request.args.get('limit', 100)) try: tasks = rpc.get_active_tasks(project, limit) except socket.error as e: app.logger.warning('connect to scheduler rpc error: %r', e) return '{}', 502, {'Content-Type': 'application/json'} result = [] for updatetime, task in tasks: task['updatetime'] = updatetime task['updatetime_text'] = utils.format_date(updatetime) if 'status' in task: task['status_text'] = taskdb.status_to_string(task['status']) result.append(task) return json.dumps(result), 200, {'Content-Type': 'application/json'}
def test_format_data(self): now = time.time() self.assertEqual(utils.format_date(now - 30), '30 seconds ago') self.assertEqual(utils.format_date(now - 60), '1 minute ago') self.assertEqual(utils.format_date(now - 2*60), '2 minutes ago') self.assertEqual(utils.format_date(now - 30*60), '30 minutes ago') self.assertEqual(utils.format_date(now - 60*60), '1 hour ago') self.assertEqual(utils.format_date(1963475336), 'Mar 21, 2032 at 9:48') self.assertEqual(utils.format_date(now - 12*60*60), '12 hours ago') self.assertRegex(utils.format_date(now - 24*60*60), r'^yesterday at \d{1,2}:\d{2}$') self.assertRegex(utils.format_date(now - 2*24*60*60), r'^[A-Z][a-z]+ at \d{1,2}:\d{2}$') self.assertRegex(utils.format_date(now - 3*24*60*60), r'^[A-Z][a-z]+ at \d{1,2}:\d{2}$') self.assertRegex(utils.format_date(now - 4*24*60*60), r'^[A-Z][a-z]+ at \d{1,2}:\d{2}$') self.assertRegex(utils.format_date(now - 5*24*60*60), r'^\d{1,2}-\d{1,2} at \d{1,2}:\d{2}$') self.assertRegex(utils.format_date(now - 333*24*60*60), r'^\d{1,2}-\d{1,2} at \d{1,2}:\d{2}$') self.assertRegex(utils.format_date(now - 334*24*60*60), r'^[A-Z][a-z]+ \d{1,2}, \d{4} at \d{1,2}:\d{2}$')
def test_format_data(self): now = time.time() self.assertEqual(utils.format_date(now - 30), '30 seconds ago') self.assertEqual(utils.format_date(now - 60), '1 minute ago') self.assertEqual(utils.format_date(now - 2 * 60), '2 minutes ago') self.assertEqual(utils.format_date(now - 30 * 60), '30 minutes ago') self.assertEqual(utils.format_date(now - 60 * 60), '1 hour ago') self.assertEqual(utils.format_date(1963475336), 'Mar 21, 2032 at 9:48') self.assertEqual(utils.format_date(now - 12 * 60 * 60), '12 hours ago') self.assertRegex(utils.format_date(now - 24 * 60 * 60), r'^yesterday at \d{1,2}:\d{2}$') self.assertRegex(utils.format_date(now - 2 * 24 * 60 * 60), r'^[A-Z][a-z]+ at \d{1,2}:\d{2}$') self.assertRegex(utils.format_date(now - 3 * 24 * 60 * 60), r'^[A-Z][a-z]+ at \d{1,2}:\d{2}$') self.assertRegex(utils.format_date(now - 4 * 24 * 60 * 60), r'^[A-Z][a-z]+ at \d{1,2}:\d{2}$') self.assertRegex(utils.format_date(now - 5 * 24 * 60 * 60), r'^\d{1,2}-\d{1,2} at \d{1,2}:\d{2}$') self.assertRegex(utils.format_date(now - 333 * 24 * 60 * 60), r'^\d{1,2}-\d{1,2} at \d{1,2}:\d{2}$') self.assertRegex(utils.format_date(now - 334 * 24 * 60 * 60), r'^[A-Z][a-z]+ \d{1,2}, \d{4} at \d{1,2}:\d{2}$')