タグ

withに関するYudoufuのブックマーク (6)

  • Fabric – Wrappers and more error handling

    I wrote about Fabric’s error handling in this post and there task execution errors were handled like this: env.warn_only=True def cmd(cmd): if run(cmd).failed: sudo(cmd) What if the task is a bit more complex and has multilple parts that can go wrong? You might want to abort the execution and do some kind of rollback action. The task could be aborted by just using env.warn_only=False but then then

    Fabric – Wrappers and more error handling
  • fabric でエラー時のロールバック処理をする - Qiita

    ところで先日、ぼくの投稿を友人に見てもらう機会があったのですが、 「キモイ、写真がキモイ。ほんとキモイよ?今まで誰も指摘してくれなかったの?」 との絶賛コメントをいただきました。 fabric はシンプルでいて、とても強力なツールです。 しかし、それは使い方によっては危険なツールでもあるということです。 特にぼくのような、キモイ人間のクズが使うときには細心の注意を払う必要があります。 今日もぼくが番環境に妙なものをデプロイしないか、 奇妙な人たち(上司ほか)が手錠をジャラジャラいわせながら監視しています。 気をつけないと。 ただ、どんなに気をつけていてもエラーというやつは起こるわけで、 だから色々ぶっ壊さないようにエラーハンドリングはちゃんとしてあげないといけません。 設定ファイルを編集した後にどこかでエラーが出たら、 ファイルだけ変えてるせいで2度とデーモンが起動しなくなった、とか、

    fabric でエラー時のロールバック処理をする - Qiita
  • 28.7. contextlib — Utilities for with-statement contexts — Python 2.7.18 documentation

    This document is for an old version of Python that is no longer supported. You should upgrade and read the Python documentation for the current stable release. Source code: Lib/contextlib.py This module provides utilities for common tasks involving the with statement. For more information see also Context Manager Types and With Statement Context Managers. Functions provided: contextlib.contextmana

    Yudoufu
    Yudoufu 2015/04/06
    contextmanagerとwithの関連構文
  • with構文を簡単に作る - Qiita

    背景 「準備→作業→後始末」、準備と後始末は共通の手続き、作業はいろいろ。 try ... finallyは何となく見栄えがよくないような? openやfabricのcdのような、with構文を作りたい。 __enter__とか、__exit__とか、難しそう・・・。 rubyのブロック付きメソッドとyieldのような感じで簡単つくれないかなぁ。 解法 contextmanagerデコレータを使うことで、比較的簡単に、また、rubyのブロックに近い感覚で書くことができる。 参考リンクのままの例だが from contextlib import contextmanager @contextmanager def tag(name): print "<%s>" % name yield print "</%s>" % name >>> with tag("h1"): ... print "f

    with構文を簡単に作る - Qiita
    Yudoufu
    Yudoufu 2015/04/06
    contextmanager decoratorでブロックっぽくwithを使う
  • with構文とは何なのか - 年中アイス

    Pythonをやっていて、with構文って何だろ?となって、理解できたので整理してみます。細かいところが違うかもしれませんが、動きはつかめるかなと思います。 Python3.3で動作確認しています。 with構文とは with構文は、ある機能の利用者が、より安全、簡潔にその機能を使えるようにする構文です。既知の定形終了処理であれば、機能作成側でそれをあらかじめ定義し、利用者はwith構文を使うだけで、安全に機能を使うことが出来ます。 with構文を使っていないファイル書き込み例 wfp = open('msg.log', 'w') wfp.write('need call close, if do not use with statement.') wfp.close() with構文を使ったファイル書き込み例 with open('msg.log', 'w') as wfp: wfp.w

    with構文とは何なのか - 年中アイス
    Yudoufu
    Yudoufu 2015/04/06
    with構文で利用できるクラス定義
  • Pythonのwithステートメントのまとめ - $ cat /var/log/shin

    Pythonを使う上で、withステートメントは、やはり見逃せない機能の1つであると思います。 Python2.5〜3.xまで網羅しているようにしたつもりです。 基 まず、一番身近なファイル操作の例を載せておきます。 with open("...") as f: print(f.read()) これは、以下と同等です。 f = open("...") print(f.read()) f.close() withステートメントを使うと、withを抜けた時に、自動的にf.closeされます。 asは必須ではありません。 f = open("...") with f: print(f.read()) これも先ほどのコードと同等です。 withに対応したクラスを作る 使うだけでは理解も深まらないので、作る方も見てみましょう。 withに渡すのは__enter__と__exit__の2つのメソッド

    Pythonのwithステートメントのまとめ - $ cat /var/log/shin
  • 1