Djangoのデータベース機能にアクセスしてPythonプログラムを書くための最も簡単な方法
-
21-09-2019 - |
質問
私は(現在は手動で、まあ、これは私の問題である)、定期的にRSSフィードから情報を取得し、ウェブサイトを持っています。これは、現在、私の意見では非常に素晴らしいではない通常のDjangoのビューとして実装されます。私は情報を更新するcronジョブを使用しての代わりに、手動で正しいURLを訪れて実行されるPythonプログラムを持っているしたいと思います。
Pythonプログラムは、私の特定のDjangoアプリケーションとDjangoのORMへのアクセス権を持たせるための最も簡単な方法は何ですか?
解決
from django.core.management import setup_environ
from django.core.mail import EmailMultiAlternatives, send_mail
from django.contrib.auth.models import User
import settings
from my.app.models import *
setup_environ(settings)
これは私がパーティーを毎日更新情報を電子メールで送信するcronのためにそれをやった方法でした。インポート設定がそれに応じてそれを反映するようの.pyは、私のDjangoアプリケーションのルートに住んでいます。
他のヒント
すべてここに与えられたアプローチに代わるものは、カスタム./manage.py
コマンドとして、あなたのcronジョブを作成することです。これは非常に簡単に行うことです、そしてあなたに、コマンドラインまたはあなたのcrontabのいずれかで./manage.py yourcommand
を行う能力を与えます。
この上の文書には非常に希薄であるが、それはあなたがあなた自身のためのテンプレートとして使用することができ、既存のコマンドのためのコードを見て、あなたを教えてくれない。
編集:Djangoの1.7の場合
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project_name.settings")
django.setup()
#have fun
<時間>
は選択した答えがあるの非推奨のジャンゴ1.4以降の
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project_name.settings")
#from your_app_name import models
##have fun
あなたは、あなたのcrontabの中でこのような何かをしたい:
PYTHONPATH=/path/to/your/project DJANGO_SETTINGS_MODULE=settings myscript.py
そして、あなたのPythonスクリプトは、これを起動する必要があります:
#!/usr/bin/env python
from django.conf import settings
そこから、あなただけの./manage.py shell
注:示されるように、あなたのプロジェクト内のインポートを行う方法に応じて、これは正確に動作しない場合があります。
:あなたは、常に「* myproject.myapp.modelsインポートから」のようなものをやっている場合は、より多くの本のように見えるようにセットcronのラインになるでしょうPYTHONPATH=/path/to/1_level_before_your_project DJANGO_SETTINGS_MODULE=myproject.settings myscript.py
私は、Pythonプログラムを持っているしたいのですが その代わりに、cronジョブを使用して実行されます 手動で正しいURLを訪問します 情報を更新します。
単純な代替:にcronジョブを作成し、の自動的の「情報を更新するための正しいURLにアクセスしてください」 - すべての後、curl
またはwget
ような単純なようである可能性があります。これは、タイトルに質問に答える、しかし、あなたはそれだけでそれを解決するための最も簡単で即時的なアプローチであるかもしれないあなたの本当の根本的な問題を説明する方法は与えられません。