私はDjangoのフロントエンドを使って、Pythonでバックアップシステムを書いています。私は少し奇妙な方法でスケジューリングを実装することに決めました - クライアントはサーバーを(10分ごとに)ポーリングし、必要なバックアップのリストを探します。サーバーは、バックアップする時間に達すると応答します。これは、システムのプラットフォームを独立させておくためです。つまり、私はcronjobなどに依存しません。したがって、Djangoフロントエンド(XML-RPC APIを公開する)は、データベースにスケジュールを格納し、クライアントがバックアップを開始するかどうかを決定するためにそのスケジュールを解釈する必要があります。Python/Djangoを介して、データベース内のスケジュールを表現する最善の方法は何ですか?
現在、スケジュールは、日、時間、分の3つのフィールドを使用して格納されています。これらはカンマ区切りの整数リストで、曜日(0〜6)、時間(0〜23)、時(0〜59)を表します。クライアントがバックアップを開始するかどうかを決定するには、ひどく非効率的な操作です - Pythonは、過去7日間、それから時間数、そして分数からすべての日にループする必要があります。私はそれがあまりループしないようにいくつかの最適化を行っていますが、それでもなお!
これは比較的うまくいきますが、実装はかなり醜いです。私が持っている問題は、フロントエンドでHTMLフォームを使ってこの情報を表示し解釈する方法です。現在、私はマルチセレクションフィールドの巨大なリストを持っていますが、明らかにうまく機能しません。
誰もが、より効率的で、またHTML形式で表現するのが容易になるスケジュールを実装するための別の方法を提案することはできますか?
少しシナリオを明確にできますか?何がバックアップされていますか - クライアント上のデータですか?次回のバックアップ日をdatetimeとしてデータベースに格納するだけの理由はありませんか? –
バックアップ間隔をタイムデータとして使用しますか?最後のバックアップの時間と必要なtimedeltaを保存した場合、計算は簡単になります。 –
私はなぜこれについて考えなかったのか分かりません。私はcronのような構文のために行くつもりだった - そして、その道に完全に立ち往生した。計画は今、次の実行日時をユーザに尋ね、それをデルタとともに記憶することである。私は素敵なJQuery UIのdatepickerウィジェットを使用することができます:)。 助けてくれてありがとう! –