ブログシステムの予約投稿機能

Posted by 技術ブログ by Strawhat.net on Saturday, November 1, 2014

これまでの記事で紹介したGit、BitBucketとPelicanを使ったブログシステム。今の仕組みでは予約投稿ができないのが欠点なのです。

で、どうすれば実現できるか検討したメモです。

予約投稿の実現案

予約投稿を実現するには、どこかにスケジューラを入れて指定されたタイミングでPelicanを起動すればいいのだけど、どこを直すか?

修正できそうな箇所は3か所あります。

  1. MarkdownファイルのBitBucketへのプッシュ

 2. BitBucketからプッシュがあったことを通知を受けるサーバ

 3. PelicanでのMarkdown⇒HTMLの処理

予約日時はMarkdownファイルのDateヘッダから取るので3にする必要があって、さらに起動日時以降の原稿を後で処理するので、それは2のサーバで行うしかなさそうです。

結局は以下の方法になるかと。

  • Pelicanが処理する前に、MarkdownファイルのDateヘッダを調べて、起動日時より前でなければPelicanの処理対象から外す。さらにサーバに通知して、スケジューラに登録させる。

    • 処理対象からの外し方は要検討。ファイルを消してしまうか移動するか。
    • Pelicanに手を入れるのが早いかもしれません。
  • スケジューラは予約された日時にPelicanを起動して原稿を処理する。

    • スケジュールはCronで間に合いそう。

もう少し調べることがありますが、その後に手早く実装してしまいます。