2017-07-12 16 views
0

私は、非同期タスクの作業についての質問があります。非同期タスクの可能性

私は2つの端末を開き、両方でsudo apt-get updateを実行するとします。明らかに、ロックファイルのために両方で実行されません。

[email protected]:/etc/ansible$ sudo apt-get update 
Reading package lists... Done 
E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable) 
E: Unable to lock directory /var/lib/apt/lists/ 

さて、ansibleに、私はこれをしなかった、

- name: update cache 
    apt: 
    update_cache: yes 
    async: 1 
    poll: 0 

- name: update cache 
    apt: 
    update_cache: yes 
    async: 1 
    poll: 0 

ansibleが同時に2つの更新タスクを実行することはできませんようさて、これら2つの連続タスクを含む役割を完了すべきではありません。

まだそれはしていて、何のエラーも投げなかった。それはなぜそうですか?

+0

私だけ見終わるので、2番目のタスクに

/var/lib/apt/list/lock 

からロックを解除、次1secondのために同じことを行う機会を与えることになります非同期タスクの実行と 'async_status'での結果のチェックがありません... –

+0

私は@KonstantinSuvorovを取得しませんでした。あなたは、それらのどれも完成していないと言っているのですか? – Luv33preet

+0

私は最初のものが成功し、もう1つが失敗したと思われます。 http://docs.ansible.com/ansible/playbooks_async.htmlでサンプルを見ましたか? –

答えて

0

async: 1で指定されているように、poll: 0、つまり:fire-and-forgetをちょうど1秒間使用した場合、シェル端末セッションは1秒間アクティブです。更新コマンドの実行の1秒後ですリモートノードで、それは私はこれがのscenerioを説明願っています:)

+0

非同期時間を60に設定した場合、aptプロセスのロックが他のセッションによって要求されているという同じエラーが表示されることを願っています:) @ Luv33preet –

+0

バックスペースと4つの先頭スペースSOがあなたのコードを自動的に強調表示するようにします。私はあなたの答えを編集しました。それはあなたの投稿を読んで理解しやすくします:-) – Wndrr