예제 #1
0
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
예제 #2
0
 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))
예제 #3
0
 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))
예제 #4
0
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
예제 #5
0
파일: task.py 프로젝트: 7472741/pyspider
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'}
예제 #6
0
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'}
예제 #7
0
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'}
예제 #8
0
파일: task.py 프로젝트: ZhiweiWang/pyspider
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'}
예제 #9
0
 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}$')
예제 #10
0
 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}$')