Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不停止Django和docker编写的情况下运行.py服务_Python_Django_Docker_Docker Compose - Fatal编程技术网

Python 如何在不停止Django和docker编写的情况下运行.py服务

Python 如何在不停止Django和docker编写的情况下运行.py服务,python,django,docker,docker-compose,Python,Django,Docker,Docker Compose,我创建了一个服务,检查我的许可证是否即将到期,如果符合条件,则发送电子邮件。我创建了一个manage.py命令,现在我需要保持始终运行,并在使用commando django compose启动时自动启动。我该怎么办 以下是我创建的命令: from django.utils import timezone from django.core.management.base import BaseCommand, CommandError from django.core.mail import

我创建了一个服务,检查我的许可证是否即将到期,如果符合条件,则发送电子邮件。我创建了一个manage.py命令,现在我需要保持始终运行,并在使用commando django compose启动时自动启动。我该怎么办

以下是我创建的命令:


from django.utils import timezone
from django.core.management.base import BaseCommand, CommandError
from django.core.mail import EmailMessage
from django.conf import settings
from django.template.loader import render_to_string
from datetime import datetime, timedelta
from time import sleep
from license.models import License
from license.models import Client

class Command(BaseCommand):
    help = 'Email sender'

    def handle(self, *args, **kwargs):
        try:
            """  Logic for 1 week expire or already expired and is_send=false  """

            client = Client.objects.all()
            licenses = License.objects.all()
            clients_name = []
            hoje = timezone.now() - timedelta(days=7)

            for date in licenses:
                if hoje >= date.expiration_datetime and date.is_send is False:
                    clients_name.append(date.client)
                    #license_instance = License.objects.get(pk=date.pk)
                    #license_instance.is_send = True
                    #license_instance.save()
                    
            """ Logic for exactly 4 months """

            for days in licenses:
                if (timezone.now() + timedelta(weeks=16) ) == days.expiration_datetime  and days.is_send is False:
                    clients_name.append(days.client)
                    license_instance = License.objects.get(pk=date.pk)
                    license_instance.is_send = True
                    license_instance.save()

            """ Logic for within a month and if today is monday"""

            today = timezone.now()
            today = today.weekday()
            todays = timezone.now()
            for daily in licenses:
                if today == 0:
                    if todays <= daily.expiration_datetime and daily.is_send is False:
                        clients_name.append(daily.client)
                        license_instance = License.objects.get(pk=date.pk)
                        license_instance.is_send = True
                        license_instance.save()

            for name in clients_name:
                
                if name in client:
                    license_id = []
                    license_id = License.objects.get(client=name)
                    self.stdout.write(self.style.SUCCESS(license_id.package))
                    template = render_to_string('html/email_template.html', {'license_id':license_id, 'name':name})
                    email = EmailMessage(
                        'The cliente license met one of the criteria',
                        template,
                        settings.EMAIL_HOST_USER,
                        [name.poc_contact_email],
                    )
                    email.fail_silently=False
                    email.send()
                    self.stdout.write(self.style.SUCCESS('Success.'))
        except ValueError:
            self.stdout.write(self.style.ERROR('None of the clients meets the criteria'))

这是我的docker-compose.yml

version: '3'
    
services:
  db:
    image: postgres
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
version: '3'
    
services:
  db:
    image: postgres
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db