В общем, лучше реорганизовать «ad-hoc» сценарии - все, что вы можете запустить вручную, например, из командной строки, - в команды управления .
Таким образом, среда выполнения Djangoнастроен правильно, как только в ваш код поступят какие-то вещи, и вы также получаете бесплатный анализ командной строки.
Ваш make_call.py
может выглядеть примерно так:
CallCenter / management / commands /make_call.py
from twilio.rest import Client
from twilio.twiml.voice_response import VoiceResponse, Say, Dial, Number, VoiceResponse
from CallCenter.models import Campaign
from django.core.management import BaseCommand
def create_xml(campaign):
# Creates XML
response = VoiceResponse()
response.say(campaign.campaign_text)
return response
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument("--campaign-id", required=True, type=int)
def handle(self, campaign_id, **options):
campaign = Campaign.objects.get(pk=campaign_id)
xml = create_xml(campaign)
print(xml)
, и он будет вызываться с помощью
$ python manage.py make_call --campaign-id=1
, где бы ни находился ваш manage.py
.
(не забудьте иметь файл __init__.py
в папках management/
и management/commands/
.)