Custom Management Commands
Django তে python manage.py migrate বা python manage.py createsuperuser এর মতো বিল্ট-ইন কমান্ড রয়েছে। আপনি নিজের প্রয়োজন অনুযায়ী কাস্টম কমান্ড তৈরি করতে পারেন (যেমন: ডেটা ইম্পোর্ট, ক্লিনআপ স্ক্রিপ্ট ইত্যাদি)।
Directory Structure
কাস্টম কমান্ড তৈরি করতে আপনার অ্যাপের মধ্যে নিম্নলিখিত স্ট্রাকচার তৈরি করতে হবে:
myapp/
management/
__init__.py
commands/
__init__.py
my_command.pyBaseCommand Class
প্রতিটি কমান্ড django.core.management.base.BaseCommand ক্লাস ইনহেরিট করে এবং handle() মেথড ইমপ্লিমেন্ট করে।
python
# myapp/management/commands/greet.py
from django.core.management.base import BaseCommand
class Command(BaseCommand):
help = 'Greets the user'
def handle(self, *args, **options):
self.stdout.write(self.style.SUCCESS('Hello, World!'))Run:
bash
python manage.py greetCommand Arguments
পজিশনাল আর্গুমেন্ট যোগ করার জন্য add_arguments() মেথড ব্যবহার করা হয়।
python
class Command(BaseCommand):
help = 'Greets a specific user'
def add_arguments(self, parser):
parser.add_argument('name', type=str, help='Name of the user')
def handle(self, *args, **options):
name = options['name']
self.stdout.write(f'Hello, {name}!')Run:
bash
python manage.py greet JohnCommand Options
অপশনাল ফ্ল্যাগ যোগ করার জন্য -- প্রিফিক্স ব্যবহার করা হয়।
python
def add_arguments(self, parser):
parser.add_argument(
'--uppercase',
action='store_true',
help='Display name in uppercase',
)
def handle(self, *args, **options):
name = "World"
if options['uppercase']:
name = name.upper()
self.stdout.write(f'Hello, {name}!')Run:
bash
python manage.py greet --uppercaseScheduling Commands
1. Cron Jobs (Linux/Mac)
bash
# crontab -e
0 2 * * * cd /path/to/project && python manage.py my_command2. Celery Beat (Recommended)
Celery Beat দিয়ে পিরিয়ডিক টাস্ক শিডিউল করা যায়।
python
# settings.py
from celery.schedules import crontab
CELERY_BEAT_SCHEDULE = {
'run-every-morning': {
'task': 'myapp.tasks.cleanup_task',
'schedule': crontab(hour=2, minute=0),
},
}