Skip to main content

No project description provided

Project description

django-commands

documentation

PyPI - Version PyPI - Python Version


Table of Contents

Installation

  1. pip install
pip install django-commands2
  1. add django_commands to INSTALLED_APPS, and logging
INSTALLED_APPS = [
    ...
    'django_commands',
]
LOGGING = {
    "loggers": {
        "django_commands": {
            ...your custom level, handles config...
        }
    }
}
DJANGO_COMMANDS_ALLOW_REMOTE_CALL = [
    "slow_command",  # add slow_command if you want to run unittest
    <your command>
]
  1. add url config like if you want to enable call command by request:
path('api/django-commands/', include("django_commands.urls")),

Call Command from url

import requests
requests.post("/api/django-commands/call-command", {"command": "slow_command"})

Usage

AutoLogCommands

any exception will be logged in the autologcommand

<yourapp/management/commands/command_name.py>
from django_commands import AutoLogCommand


class Command(AutoLogCommand):

    def handle(self):
        <write your code, any exception will be logged>

MultiTimesCommand

MultiTimesCommand will run multi times according to INTERVAL and MAX_TIMES. You can easily use this command to realize a crontab job every 1 second.

class Command(MultiTimesCommand):
    INTERVAL = 1  # default 1
    MAX_TIMES = 60  # default 60

    def handle(self):
        <this handle function will run 60 times>

This command does not consider the running time of your code. It will just run 60 times, and during each execute, wait 1 second

DurationCommand(AutoLogCommand):

DurationCommand will run your commands over and over again until the running time exceed the configuration

import datetime

class Commmand(DurationCommand):
    INTERVAL = 1
    DURATION = datetime.timedelta(minutes=1)

    def handle(self, *args, **kwargs):
        <your code>

UniqueCommand

UniqueCommand can assert that only one command instance is running

How it works? Every time the command executes:

  1. it will create a django_commands.models.CommandLog instance
  2. it will check if there is another Command Instance pending with the same UNIQUE_NAME
import time
from django_commands.commands import UniqueCommand

class Command(UniqueCommand):
    def handle(self):
        print("I'm running. In the next 5 seconds, you cannot execute this command. It will exist directly")
        time.sleep(5)
        print("I'm running")
        raise Exception("even error occurs, this task will be set finished")

License

django-commands is distributed under the terms of the ONLY USE NO PRIVATE CHANGE LICENSE license.

Anyone can use pip install django-commands to use this project by any meaning as long as you keep the source code unchanged.
You are not allowed to change the source code without publishing your change.
Here publishing means you: fork this project from github and keep your change available to public on the github

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_commands2-0.21.0.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

django_commands2-0.21.0-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

Details for the file django_commands2-0.21.0.tar.gz.

File metadata

  • Download URL: django_commands2-0.21.0.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.27.0

File hashes

Hashes for django_commands2-0.21.0.tar.gz
Algorithm Hash digest
SHA256 821bd53f38d5991aca0db786488b5afb52eee900de1f208a586bf9179bbd7235
MD5 03f7612663c19d1f6d3234a529554814
BLAKE2b-256 5e3aad3c7e0b331bf2b66a7f751901900b09e9de813e309b52cb392fd475f357

See more details on using hashes here.

File details

Details for the file django_commands2-0.21.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_commands2-0.21.0-py3-none-any.whl
Algorithm Hash digest
SHA256 666f667e90617a368415cb1c781e4165a1d47a8c534cebef11c1e5bb45c25184
MD5 b396a7fb30924d889816cc1f08270643
BLAKE2b-256 e75ccc9eeb9192d7ffc39ca15ff6472e4bd7aebfc4750af0d15b0776a70adb14

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page