1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python OSSでリモート制御を実装しよう

Last updated at Posted at 2019-10-06

はじめに

こんにちは。テクノプロで組み込み開発エンジニアをしている神崎 一郎です。
SI(System Integration)のプラットフォームを開発しています。
今回は、Pythonによるリモート制御実装のポイントについて、書きたいと思います。

用語

Celeryについて

Distributed Task QueueのOSSである。参照:
Celery

Fabricについて

SSHのライブラリのOSSである。参照:
Fabric

Redis

超高速なメモリDBのOSSであり、CeleryのBrokerとして利用する。

リモート制御機能の要件

  • 制御を行うPC(以下は「Master PC」と言う)
    • 1.1 (サービス条件の前提)Redis動作可能
    • 1.2 Pythonスクリプトによるリモート実行のタスクを作成する
    • 1.3 タスクのログ採取、モニターリングは容易
    • 1.4 Masterより完全な自動処理
  • 制御されるPC(以下は「SI PCと言う」)
    • 2.1 (サービス条件の前提)Celery Worker動作可能
    • 2.2 Pythonスクリプトによる制御タスクを実行する
    • 2.3 Pythonスクリプトの動的更新はある
    • 2.4 (通信条件の前提)SSHログイン可能
  • 時間的制約
    • 3.1 処理を起動する遅延は1秒以下

実装について検討

OSSの選定

Fabric

左記の要件から考えると、SSHは、2.3のスクリプト更新(デプロイ)、Workerの起動にとどめると良いでしょう。
Fabricをライブラリとして利用すると良いでしょう。

Celery

Airflowを利用するのも考えられますが、用件3.1から考えると、無理があると思う。
それに、Airflowのコアとして利用されているCeleryを直接に利用する。

コンポーネント・モジュール割り当て

Master PC上のメイン処理:Package celmain

  • 汎用的な処理(ソースコードは変わらない)
  • Celeryタスクの作成、実行(要件1.2)
  • SSHにてSI PCのスクリプト更新(デプロイ、要件2.3)
  • SSHにてCelery Workerの(再)起動(要件1.4)

制御スクリプト(Master PCとSI PC両方):Package celctrl

  • 制御処理のスクリプトからなる(制御タスクの定義であり、要件2.2)
  • タスクとしてcelmainに作成、投入され、SI PC上ではCelery Workerに実行される

その他

  • 1.3 モニターリング機能は、Celery Flowerはそのまま使える(要件1.3)
  • SI PCのスクリプト更新(デプロイ、要件2.3)は、Git機能を利用すると良いでしょう(GitLab-CEとか)

課題

(Master PC)celmainのcelctrl moduleのimportエラー

予めcelctrl packageをインストールすることで解決出来る:

$ pip install -e .

(SI PC)celctrlデプロイ後のリロード

「celery worker」コマンドで起動されたCelery Workerは、リロードの機能がないため、下記のようにWorkerを起動します:

Celery Worker起動

$ celery multi start 1 -A proj -l info -c4 --pidfile=/var/run/celery/%n.pid

Celery Worker再起動(更新後のスクリプトをロードさせます)

$ celery multi restart 1 --pidfile=/var/run/celery/%n.pid

終わりに

いかがでしたか。Pythonによる1秒以下遅延のリモート制御を実装出来ます。自動化システムに、良く必要な機能なので、チャンスがあれば、ぜひ試して下さい。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?