2009-09-04 11 views
3

RSSフィードから定期的に情報を取得するWebサイトがあります(現在、手動で、これは私の問題です)。これは現在、通常のDjangoビューとして実装されていますが、これは私の意見ではあまり良くありません。私は手動で情報を更新するために正しいURLを訪れる代わりにcronjobを使って実行されるPythonプログラムを持っていたいと思います。Djangoデータベース機能にアクセスするPythonプログラムを作成する最も簡単な方法

私の特定のDjangoアプリケーションとDjango ORMにPythonプログラムがアクセスする最も簡単な方法は何ですか?

+0

重複:http://stackoverflow.com/questions/579511/using-only-the-db-part-of-django –

+0

重複します。http:// stackoverflowの。 com/questions/302651/use-only-some-of-django –

答えて

13

これは、私がパーティーの毎日の更新を電子メールで送信したcronのための方法でした。 .pyは私のdjangoアプリのルートにあったので、インポート設定はこれに応じて反映されます。

+0

これは非常に役に立ちました。ありがとう。 –

0

あなたのcrontabの中にこのような何かしたい:

PYTHONPATH=/path/to/your/project DJANGO_SETTINGS_MODULE=settings myscript.py 

をしてからPythonスクリプトはこれで起動する必要があります。そこから

#!/usr/bin/env python 

from django.conf import settings 

、あなたはモデル/ビューをインポートすることができるはずです/ forms /それ以外は何でもあり、環境はちょうどaのようです。./manage.py shell

注:プロジェクト内でのインポートの仕方によっては、これはありません示されているとおりに正確に働きます。

PYTHONPATH=/path/to/1_level_before_your_project DJANGO_SETTINGS_MODULE=myproject.settings myscript.py 
0

私はPythonプログラムを持っているしたいと思います:あなたは、常に「myproject.myapp.modelsから*インポート」のようなものをやっている場合は、より多くの本のように見えるようにcronのラインを設定することになるでしょう を手動で正しいURL に訪問して情報を更新してください。

単純な代替:自動的ににcronジョブを書き「の情報を更新するために、正しいURLにアクセスしてください」 - 結局、curlまたはwgetような単純なものでした。これはタイトルの質問に答えるものではありませんが、あなたの本当の根底にある問題を説明する方法を考えれば、それを解決するための最も簡単で最も迅速なアプローチかもしれません。

9

ここに示したすべてのアプローチの代わりに、カスタム./manage.pyコマンドとしてcronジョブを書き込むこともできます。これは非常に簡単で、コマンドラインまたはcrontabで./manage.py yourcommandを実行することができます。

The documentationこれは非常にまばらですが、あなた自身のテンプレートとして使用できる既存のコマンドのコードを見てください。

+0

これは完璧に動作します。追加の注意と同様に、cronとapacheは異なるユーザーによって所有されていることに注意してください。したがって、環境に問題があるかもしれません(プロキシや権限など)。 –

+0

おそらく、cronジョブをApacheユーザーとして実行させることができます。 –

2

編集:Djangoの1.7について

import os 
import django 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project_name.settings") 
django.setup() 
#have fun 

Credit


選択した答えは、Djangoの1以来を推奨されていません。4

import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project_name.settings") 
#from your_app_name import models 
##have fun 

出典:https://stackoverflow.com/a/18760222

関連する問題