def start_project(ctx, project): """Start a project.""" from fulmar.message_queue import newtask_queue from fulmar.scheduler.projectdb import projectdb if not os.path.exists(project): raise IOError('No such file or directory: "%s".' % project) if not os.path.isfile(project): raise IOError('Is not a Python file: "%s".' % project) if not project.endswith('.py'): raise TypeError('Not a standard Python file: "%s". Please make sure it is a Python file which ends with ".py".' % project) project_name = project.split('/')[-1].strip(' .py') project_data = projectdb.get(project_name) if not project_data: ctx.invoke(update_project, project_file=project) project_data = projectdb.get(project_name) if project_data.get('is_stopped'): project_data.update({'is_stopped': False}) projectdb.set(project_name, project_data) newtask = { "project_name": project_name, 'project_id': project_data.get('project_id'), "taskid": project_name + ': on_start', "url": 'first_task: ' + project_name, "process": { "callback": "on_start", }, "schedule": { "is_cron": True }, } newtask_queue.put(newtask) click.echo('Successfully start project: "%s".' % project_name)
def delete_project(ctx, project_name): """Delete a project.""" from fulmar.scheduler.projectdb import projectdb project_name = project_name.split('/')[-1].strip(' .py') project_data = projectdb.get(project_name) if not project_data: click.echo('Sorry, can not find project: "%s".' % project_name) return projectdb.delete(project_name) click.echo('\nSuccessfully delete project: "%s".\n' % project_name)
def stop_project(ctx, project_name): """Stop a project.""" from fulmar.scheduler.projectdb import projectdb project_name = project_name.split('/')[-1].strip(' .py') project_data = projectdb.get(project_name) if not project_data: click.echo('Sorry, can not find project: "%s".' % project_name) return project_data.update({'is_stopped': True}) projectdb.set(project_name, project_data) click.echo('Successfully stop project: "%s".' % project_name)