django.core.exceptions.ImproperlyConfigured:已请求设置INSTALLED_APPS,但尚未配置设置。您必须定义环境变量DJANGO_SETTINGS_MODULE或在访问设置之前调用settings.configure()。
当我运行testapscheduler.py文件时,我得到了上面的错误。是否因为我只运行了Dajngo框架中的一个文件,所以我得到了上面的错误?我该如何测试它?
测试应用调度程序.py:
import logging
from models import Todo
from apscheduler.schedulers.background import BackgroundScheduler
from datetime import datetime, timedelta
import pytz
import requests
def notify_todo():
# 現在の日時を取得
now = datetime.now(pytz.timezone('Asia/Tokyo'))
# 締め切りが30分以内のTODOリストを取得
todos = Todo.objects.filter(
deadline__gt=now - timedelta(minutes=30),
deadline__lt=now + timedelta(minutes=30),
ttime__isnull=False,
ttime__gt=now.time()
)
# 30分以内のTODOリストの数を出力
# ログの出力名を設定
logger = logging.getLogger('mylog')
#ログレベルを設定
logger.setLevel(logging.DEBUG)
#ログをコンソール出力するための設定
sh = logging.StreamHandler()
logger.addHandler(sh)
logger.debug(f'{len(todos)}個のTODOリストが締め切り30分以内にあります。')
for todo in todos:
#LINE NotifyのAPIトークンを取得
api_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# 通知メッセージの作成
message = f"【{todo.title}】\n締切時間:{todo.deadline.strftime('%Y/%m/%d %H:%M')}\n詳細:{todo.description}"
# LINE Notifyに通知を送信
headers = {'Authorization': f'Bearer {api_token}'}
payload = {'message': message}
requests.post('https://notify-api.line.me/api/notify', headers=headers, data=payload)
def start():
scheduler =BackgroundScheduler(timezone='Asia/Tokyo')
scheduler.add_job(notify_todo, 'interval', seconds=2) # 2秒ごとに実行
scheduler.start()
型号.py
from django.db import models
class Todo(models.Model):
title = models.CharField("タスク名", max_length=30)
description = models.TextField("詳細", blank=True)
deadline = models.DateField("締切")
ttime = models.TimeField("")
def __str__(self):
return self.title
1条答案
按热度按时间w6mmgewl1#
我建议使用标准的方法从命令行执行命令,但是要在django的上下文中:django管理命令。
请参阅此问题的答案this is the code for my manage.py script i would like someone to explain each line please i barely understand it
在您的情况下,start()中的代码需要进入管理命令的handle()函数。
然后调用命令