Commands¶
Create a command¶
To create a first level command, import from outflow.core.commands import Command, RootCommand and subclass Command and decorate with @RootCommand.subcommand():
from outflow.core.commands import Command, RootCommand
@RootCommand.subcommand()
class MyCommand(Command):
def setup_tasks(self):
# instantiate tasks and setup the workflow
This command will be available at :
$ python manage.py my_command
Create subcommands¶
If you want to create subcommands of a common command (think git clone git commit), first create a non-invokable top level command:
@RootCommand.subcommand(invokable=False)
class Git(Command):
pass
This command will print its help if called directly.
Then, create a subcommand of the previous one.
@Git.subcommand(invokable=False)
class Clone(Command):
def setup_tasks(self):
...
Built-in commands¶
Outflow ships with a bunch of useful commands, available through the management command :
$ python -m outflow management ...
or
$ python manage.py management ...
(ShellCommand)=
shell¶
python manage.py management shell
This command will execute an IPythonTask. This is useful for development and debugging, because you are inside an outflow pipeline so you have acces to everything you would in a pipeline execution : the pipeline context, the database session, the config and settings. You can also import tasks and execute them like so (if you provide them with the expected inputs)
In [1]: from namespace.plugin.tasks import FirstTask, SecondTask
In [2]: first_task = FirstTask() # instanciate the task
In [3]: my_input = 42
In [4]: first_task_result = first_task(input1=my_input) # call the task with the inputs as kwargs
In [5]: second_task = SecondTask()
In [6]: second_task(first_task_result) # tasks return dictionaries so you can call the next task of the workflow directly with the result of the previous task
display_config¶
python manage.py management display_config
Prints the path of the configuration file.