Run Django tasks
Django 6.0 introduced a built-in tasks framework for running code outside the request-response cycle. PyCharm lets you enqueue a task from the editor and saves the settings in a Django Task run/debug configuration.
Enqueue a task from the editor
Click the gutter icon next to a function decorated with
@taskand select Run 'Enqueue <function name>'.Alternatively, place the caret on the function name, right-click, and select Run 'Enqueue <function name>'.
If the task has required parameters and no arguments are specified yet, enter the arguments in the Specify Task Arguments dialog and click OK. Use the Python call syntax, for example,
["admin@example.com"], subject="Report".
PyCharm creates a Django Task run/debug configuration for the task, or reuses an existing one, and runs it.
How tasks are enqueued
When you run a Django Task configuration, PyCharm runs the shell command of manage.py, which imports the task and calls its enqueue() method with the specified arguments. PyCharm does not start a worker. What happens next depends on the task backend configured in your Django settings:
With the default
ImmediateBackend, the task runs immediately in the same process, and its output appears in the Run tool window.With other backends, start a worker separately to process the enqueued task.
Django Task configuration options
Create:
Common options
Item | Description |
|---|---|
Name | Specify a name for the run configuration to quickly identify it among others when editing or running. |
Allow multiple instances | Allow running multiple instances of this run configuration in parallel. By default, it is disabled, and when you start this configuration while another instance is still running, PyCharm suggests stopping the running instance and starting another one. This is helpful when a run configuration consumes a lot of resources and there is no good reason to run multiple instances. |
Store as project file | Save the file with the run configuration settings to share it with other team members. The default location is .idea/runConfigurations. However, if you do not want to share the .idea directory, you can save the configuration to any other directory within the project. By default, it is disabled, and PyCharm stores run configuration settings in .idea/workspace.xml. |
Django Task-specific configuration options
Item | Description |
|---|---|
Python Interpreter | Select one of the pre-configured Python interpreters from the list. |
Task path | Specify the import path of the module that contains the task, for example, |
Task name | Specify the name of the task function. |
Arguments | Specify the arguments to pass to the task in the Python call syntax, for example, |
Working directory | Specify a directory to be used by the running task.
You can use path variables in this field. |
Environment variables | This field shows the list of environment variables. If the list contains several variables, they are delimited with semicolons. By default, the field contains the variable To create a new variable, click You might want to populate the list with the variables stored as a series of records in a text file, for example:
Variable1 = Value1
Variable2 = Value2
Just copy the list of variables from the text file and click Paste ( |
Paths to ".env" files | This field shows paths to .env files with environment variables. If there are several files, the paths to them are delimited with semicolons. To manage the list of .env files, click You can also use |
Additional options
Click Modify options and select the options that you want to add to the dialog.
Operating System
Item | Description |
|---|---|
Allow multiple instances | Allow running multiple instances of this run configuration in parallel. By default, it is disabled, and when you start this configuration while another instance is still running, PyCharm suggests stopping the running instance and starting another one. This is helpful when a run configuration consumes a lot of resources and there is no good reason to run multiple instances. |
Python
Item | Description |
|---|---|
Interpreter options | In this field, specify the command-line options to be passed to the interpreter. If necessary, click |
Add content roots to PYTHONPATH | Select this checkbox to add all content roots of your project to the environment variable PYTHONPATH. |
Add source roots to PYTHONPATH | Select this checkbox to add all source roots of your project to the environment variable PYTHONPATH. |
Logs
The following options are related to logging the execution of this configuration. For more information, refer to Setting log options.
Item | Description |
|---|---|
Specify logs to be shown in the console | Specify which log files to display while running the application. Click
For logs in the table, you can configure the following options:
|
Save console output to file | Save the console output to the specified location. Type the path manually or click the browse button and point to the desired location in the dialog that opens. |
Show console when a message is printed to stdout | Activate the console when the application writes to the standard output stream. |
Show console when a message is printed to stderr | Activate the console when the application writes to the standard error stream. |
Before launch
Item | Description |
|---|---|
Open run/debug tool window when started | By default this option is selected and the Run or the Debug tool window opens when you start the run/debug configuration. Otherwise, the tool window is hidden. However, when the configuration is running, you can open the corresponding tool window for it yourself by pressing Alt+4 or Alt+5. |
Focus run/debug tool window when started | Select this option to automatically move focus to the Run or the Debug tool window when you start the run/debug configuration. |
Show the run/debug configuration settings before start | Select this option to show the run/debug configuration settings prior to actually starting the run/debug configuration. |
Add before launch task | Select this option to add one of the following available tasks:
|