1

ユーザーがメッセージ、メール、時間を入力できるようにするPythonスクリプトを作成しました。メールの送信を希望します。これはすべて mysql データベースに保存されます。

ただし、指定した日時にスクリプトを実行するにはどうすればよいですか? cronジョブが必要ですか?つまり、4 月 20 日の 2:15 に、スクリプトは 2:15 のすべての時間をデータベースで検索し、それらのメールを送信します。しかし、2:16 のメールはどうでしょうか?

提供されている共有ホスティングを使用しているため、スクリプトを継続的に実行することはできません。

ありがとう

4

3 に答える 3

2

この django アプリケーションは、あなたの状況にある人々のためだけに作成されたようです...

http://code.google.com/p/django-cron/

また、あなたのデザインには少し欠陥があるようです。2:15 に実行されている場合、2:15 に送信する必要がある電子メールだけを送信するのではなく、過去に送信する必要があり、送信されていないすべての電子メールを送信する必要があります。

データベースは次のいずれかを行う必要があります。 A. エントリが送信されたら削除するか、B. データベース テーブルに列を定義して、送信されたかどうかを格納します。次に、ロジックでその列を利用する必要があります。

于 2010-04-28T20:52:58.957 に答える
2

スクリプトを継続的に実行できない場合は、何かがそれをトリガーする必要があるため、OS 内部に依存する必要があります。Unix環境では、あなたが述べているように、cronジョブがうまくいきます。

スクリプトを実行するように cron を設定し、スクリプトを一定時間待機させてから、次の電子メールがこの一定時間以上離れるまで実行と送信を続けます。次に、スクリプトで新しいウェイクアップ時間用の新しい cron ジョブを追加します。

于 2010-04-28T19:47:40.373 に答える
1

毎分かそこらのcronjobがそれを行います。これを検討している場合は、次の 2 つの点に注意してください。

1 - 1 分間に送信されると予想される電子メールの数は? 電子メールの送信に 1 秒かかり、1 分間に 100 通の電子メールがある場合、キューは終了しません。

2 - 最後のジョブが終了する前に 1 つのジョブが開始されるとどうなりますか? メールの重複送信にご注意ください。最初のプロセスが確実に終了するようにするか (リスク: 最終的に電子メールをドロップする可能性があります)、次のプロセスを開始しないようにするか (リスク: 最初のプロセスがキュー全体をハングアップさせます)、それらを並行して動作させる (リスク: 同期の問題) 必要があります。

daramarak の提案 (最後に新しい cron ジョブを追加するスクリプトを作成する) を採用すると、1 つのエラーが発生すると、システム全体が崩壊するリスクがあります。

于 2010-04-28T21:53:55.333 に答える