<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/index.php?action=history&amp;feed=atom&amp;title=Python_Celery</id>
	<title>Python Celery - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/index.php?action=history&amp;feed=atom&amp;title=Python_Celery"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Python_Celery&amp;action=history"/>
	<updated>2026-05-04T23:08:04Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Python_Celery&amp;diff=37899&amp;oldid=prev</id>
		<title>Kusanaginoturugi: /* トラブルシューティング */ 削除</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Python_Celery&amp;diff=37899&amp;oldid=prev"/>
		<updated>2024-07-09T09:20:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;トラブルシューティング: &lt;/span&gt; 削除&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2024年7月9日 (火) 18:20時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;132行目:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;132行目:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{ic|celery.py}} の中で {{ic|CELERYBEAT_SCHEDULE}} を指定したい場合、Celery がタスクを認識できるように {{ic|app.conf}} プレフィックスを追加する必要があります。その後 Celery デーモンを起動するときに {{ic|1=--beat --schedule=/var/lib/celery/celerybeat-schedule}} パラメータを追加してください。さらに、{{ic|/var/lib/celery}} ディレクトリが存在している必要があり所有者は celery を実行するユーザーでなければなりません。&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{ic|celery.py}} の中で {{ic|CELERYBEAT_SCHEDULE}} を指定したい場合、Celery がタスクを認識できるように {{ic|app.conf}} プレフィックスを追加する必要があります。その後 Celery デーモンを起動するときに {{ic|1=--beat --schedule=/var/lib/celery/celerybeat-schedule}} パラメータを追加してください。さらに、{{ic|/var/lib/celery}} ディレクトリが存在している必要があり所有者は celery を実行するユーザーでなければなりません。&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== トラブルシューティング ==&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[#systemd の chroot ユニット]]が特に問題を報告しないのに celery サービスが機能しない場合、コンソールから chroot の中の celery を起動して詳しくログを確認することができます。例:&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; # /usr/bin/chroot --userspec=root:root /srv/http/apps/celery /usr/bin/env -i HOME=/ /usr/bin/python -m celery worker -A package_name --uid=33 --gid=33 --pidfile=/run/celery.pid --logfile=/var/log/celery/celery.log --loglevel=&quot;INFO&quot;&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kusanaginoturugi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Python_Celery&amp;diff=37898&amp;oldid=prev</id>
		<title>Kusanaginoturugi: /* chroot で Celery を実行 (実験的) */ 削除</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Python_Celery&amp;diff=37898&amp;oldid=prev"/>
		<updated>2024-07-09T09:13:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;chroot で Celery を実行 (実験的): &lt;/span&gt; 削除&lt;/p&gt;
&lt;a href=&quot;https://wiki.archlinux.jp/index.php?title=Python_Celery&amp;amp;diff=37898&amp;amp;oldid=26748&quot;&gt;差分を表示&lt;/a&gt;</summary>
		<author><name>Kusanaginoturugi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Python_Celery&amp;diff=26748&amp;oldid=prev</id>
		<title>Kusanaginoturugi: カテゴリを訂正</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Python_Celery&amp;diff=26748&amp;oldid=prev"/>
		<updated>2022-08-05T05:24:06Z</updated>

		<summary type="html">&lt;p&gt;カテゴリを訂正&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022年8月5日 (金) 14:24時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:開発&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;デーモンとシステムサービス&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:開発]]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[en:Python celery]]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[en:Python celery]]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.celeryproject.org/ プロジェクトウェブサイト] より:&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.celeryproject.org/ プロジェクトウェブサイト] より:&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kusanaginoturugi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Python_Celery&amp;diff=22713&amp;oldid=prev</id>
		<title>Kusanaginoturugi: カテゴリを修正</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Python_Celery&amp;diff=22713&amp;oldid=prev"/>
		<updated>2021-12-08T03:56:38Z</updated>

		<summary type="html">&lt;p&gt;カテゴリを修正&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021年12月8日 (水) 12:56時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:デーモンとシステムサービス]]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;開発&lt;/ins&gt;デーモンとシステムサービス]]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[en:Python celery]]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[en:Python celery]]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.celeryproject.org/ プロジェクトウェブサイト] より:&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.celeryproject.org/ プロジェクトウェブサイト] より:&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kusanaginoturugi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Python_Celery&amp;diff=14982&amp;oldid=prev</id>
		<title>Kusakata.bot2: Pkg/AUR テンプレートの更新</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Python_Celery&amp;diff=14982&amp;oldid=prev"/>
		<updated>2019-09-25T14:55:17Z</updated>

		<summary type="html">&lt;p&gt;Pkg/AUR テンプレートの更新&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2019年9月25日 (水) 23:55時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;5行目:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;5行目:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== インストール ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== インストール ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{pkg|python-celery}} パッケージを[[インストール]]してください。他の python パッケージと同じように Python 3.x と互換性のあるパッケージが入手できます。Python 2.x と互換性のあるパッケージが必要な場合は {{pkg|python2-celery}} をインストールしてください。&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{pkg|python-celery}} パッケージを[[インストール]]してください。他の python パッケージと同じように Python 3.x と互換性のあるパッケージが入手できます。Python 2.x と互換性のあるパッケージが必要な場合は {{pkg|python2-celery&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}{{Broken package link|{{aur-mirror|python2-celery}}&lt;/ins&gt;}} をインストールしてください。&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html Celery のドキュメント] より: &quot;Celery はメッセージを送信・受信するための手段を必要とします&quot;。選択肢のひとつとして [[RabbitMQ]] が存在し、公式リポジトリからインストールできます。&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html Celery のドキュメント] より: &quot;Celery はメッセージを送信・受信するための手段を必要とします&quot;。選択肢のひとつとして [[RabbitMQ]] が存在し、公式リポジトリからインストールできます。&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kusakata.bot2</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Python_Celery&amp;diff=9112&amp;oldid=prev</id>
		<title>Kusakata: 翻訳</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Python_Celery&amp;diff=9112&amp;oldid=prev"/>
		<updated>2017-06-27T14:09:07Z</updated>

		<summary type="html">&lt;p&gt;翻訳&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:デーモンとシステムサービス]]&lt;br /&gt;
[[en:Python celery]]&lt;br /&gt;
[http://www.celeryproject.org/ プロジェクトウェブサイト] より:&lt;br /&gt;
:Celery は分散されたメッセージ受け渡しに基づく非同期のタスクキュー・ジョブキューです。リアルタイム処理に焦点が当てられていますが、スケジューリングもサポートしています。タスクは非同期 (バックグラウンド) または同期的 (準備ができるまで待機) に実行できます。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
{{pkg|python-celery}} パッケージを[[インストール]]してください。他の python パッケージと同じように Python 3.x と互換性のあるパッケージが入手できます。Python 2.x と互換性のあるパッケージが必要な場合は {{pkg|python2-celery}} をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
[http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html Celery のドキュメント] より: &amp;quot;Celery はメッセージを送信・受信するための手段を必要とします&amp;quot;。選択肢のひとつとして [[RabbitMQ]] が存在し、公式リポジトリからインストールできます。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
=== Celery ===&lt;br /&gt;
&lt;br /&gt;
設定ファイルを保存するためのディレクトリ {{ic|/etc/celery/}} を作成する必要があります。サンプル設定ファイルが [http://docs.celeryproject.org/en/latest/userguide/daemonizing.html#example-configuration Celery のドキュメント] に記載されています。&lt;br /&gt;
&lt;br /&gt;
{{ic|celery@&amp;#039;&amp;#039;celery&amp;#039;&amp;#039;.service}} を[[起動]]・[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
=== RabbitMQ ===&lt;br /&gt;
&lt;br /&gt;
RabbitMQ は設定を {{ic|/etc/rabbitmq/rabbitmq-env.conf}} に保存します。&lt;br /&gt;
&lt;br /&gt;
デフォルト設定:&lt;br /&gt;
&lt;br /&gt;
 NODENAME=rabbit@rakieta&lt;br /&gt;
 NODE_IP_ADDRESS=0.0.0.0&lt;br /&gt;
 NODE_PORT=5672&lt;br /&gt;
 &lt;br /&gt;
 LOG_BASE=/var/log/rabbitmq&lt;br /&gt;
 MNESIA_BASE=/var/lib/rabbitmq/mnesia&lt;br /&gt;
&lt;br /&gt;
RabbitMQ は Unix ソケットをサポートしていないため {{ic|0.0.0.0}} を {{ic|127.0.0.1}} で置き換えると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
設定をシンプルにするために {{ic|1=HOME=/var/lib/rabbitmq}} も追加すると良いでしょう。環境変数について詳しくは [http://www.rabbitmq.com/configure.html RabbitMQ のドキュメント] を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|rabbitmq.service}} を[[起動]]・[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|rabbitmq-service}} は rabbitmq ユーザーとして実行され、ホームフォルダは {{ic|/var/lib/rabbitmq}} の中に保存されます。フォルダとサブフォルダの所有者が rabbitmq ユーザーになっていることを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
[http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html#broker-rabbitmq RabbitMQ のドキュメント] に従ってユーザーとバーチャルホストを追加:&lt;br /&gt;
 $ cd /var/lib/rabbitmq&lt;br /&gt;
 $ su rabbitmq -c &amp;#039;rabbitmqctl add_user myuser mypassword&amp;#039;&lt;br /&gt;
 $ su rabbitmq -c &amp;#039;rabbitmqctl add_vhost myvhost&amp;#039;&lt;br /&gt;
 $ su rabbitmq -c &amp;#039;rabbitmqctl set_user_tags myuser mytag&amp;#039;&lt;br /&gt;
 $ su rabbitmq -c &amp;#039;rabbitmqctl set_permissions -p myvhost myuser &amp;quot;.*&amp;quot; &amp;quot;.*&amp;quot; &amp;quot;.*&amp;quot;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
詳しくは [http://www.rabbitmq.com/admin-guide.html#access-control RabbitMQ の管理者ガイド] を読んでください。&lt;br /&gt;
&lt;br /&gt;
{{ic|su rabbitmq -c &amp;quot;rabbitmqctl status&amp;quot;}} を実行したときに {{ic|badrpc,nodedown}} となる場合、問題の解決方法が [http://www.somic.org/2009/02/19/on-rabbitmqctl-and-badrpcnodedown/ こちらの記事] に載っています。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|su rabbitmq -c &amp;quot;erl&amp;quot;}} を実行することで erlang のプロンプトをエラーなく表示できます。}}&lt;br /&gt;
&lt;br /&gt;
=== セキュリティ ===&lt;br /&gt;
&lt;br /&gt;
[http://docs.celeryproject.org/en/latest/userguide/security.html Celery ドキュメント] のセキュリティセクションを読んでください。&lt;br /&gt;
&lt;br /&gt;
== サンプルタスク ==&lt;br /&gt;
&lt;br /&gt;
=== Celery アプリケーション ===&lt;br /&gt;
&lt;br /&gt;
[http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#application Celery ドキュメント] に従って python のサンプルタスクを作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|test.py|2=from celery import Celery&lt;br /&gt;
    &lt;br /&gt;
    app = Celery(&amp;#039;tasks&amp;#039;, backend=&amp;#039;amqp&amp;#039;, broker=&amp;#039;amqp://myuser:mypassword@localhost:5672/myvhost&amp;#039;)&lt;br /&gt;
    &lt;br /&gt;
    @app.task&lt;br /&gt;
    def add(x, y):&lt;br /&gt;
        return x + y}}&lt;br /&gt;
&lt;br /&gt;
{{ic|amqp://myuser:mypassword@localhost:5672/myvhost}} は RabbitMQ を設定したときに作成したユーザー・バーチャルホストと同じにしてください。&lt;br /&gt;
&lt;br /&gt;
Celery によって使われるデフォルトのブローカーは RabbitMQ であるため {{ic|1= backend=&amp;#039;amqp&amp;#039;}} パラメータは任意です。&lt;br /&gt;
&lt;br /&gt;
=== テスト ===&lt;br /&gt;
&lt;br /&gt;
{{ic|test.py}} のあるディレクトリで以下のコマンドを実行:&lt;br /&gt;
 $ celery -A task worker --loglevel=info&lt;br /&gt;
&lt;br /&gt;
そして (同一ディレクトリに) 以下のファイルを作成:&lt;br /&gt;
{{hc|call.py|2=from test import add&lt;br /&gt;
    &lt;br /&gt;
    add.delay(4, 4)}}&lt;br /&gt;
&lt;br /&gt;
実行:&lt;br /&gt;
 $ python call.py&lt;br /&gt;
&lt;br /&gt;
コンソールからワーカーの情報が出力されます:&lt;br /&gt;
 Received task: task.add[f4aff99a-7477-44db-9f6e-7e0f9342cd4e]&lt;br /&gt;
 Task task.add[f4aff99a-7477-44db-9f6e-7e0f9342cd4e] succeeded in 0.0007182330009527504s: 8&lt;br /&gt;
&lt;br /&gt;
=== Celery サービスのモジュールの準備 ===&lt;br /&gt;
[http://docs.celeryproject.org/en/latest/getting-started/next-steps.html#our-project Celery ドキュメント] に書かれていることとは少し異なる手順で説明しています。&lt;br /&gt;
&lt;br /&gt;
{{ic|test_task}} モジュールを作成:&lt;br /&gt;
 # mkdir /lib/python3.5/site-packages/test_task&lt;br /&gt;
 # touch /lib/python3.5/site-packages/test_task/__init__.py&lt;br /&gt;
 # touch /lib/python3.5/site-packages/test_task/test_task.py&lt;br /&gt;
 # touch /lib/python3.5/site-packages/test_task/celery.py&lt;br /&gt;
&lt;br /&gt;
{{hc|/lib/python3.5/site-packages/test_task/celery.py|2=&lt;br /&gt;
from __future__ import absolute_import&lt;br /&gt;
&lt;br /&gt;
from celery import Celery&lt;br /&gt;
&lt;br /&gt;
app = Celery(&amp;#039;tasks&amp;#039;, backend=&amp;#039;amqp&amp;#039;, broker=&amp;#039;amqp://myuser:mypassword@localhost:5672/myvhost&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
 app.start()}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/lib/python3.5/site-packages/test_task/test_task.py|2=&lt;br /&gt;
from __future__ import absolute_import&lt;br /&gt;
&lt;br /&gt;
from test_task.celery import app&lt;br /&gt;
&lt;br /&gt;
@app.task&lt;br /&gt;
def add(x, y):&lt;br /&gt;
 return x + y}}&lt;br /&gt;
&lt;br /&gt;
コンソールで {{ic|python}} を起動して以下のコマンドを実行できるはずです:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from test_task import celery&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/celery/celery.conf}} の中の以下の行を:&lt;br /&gt;
 CELERY_APP=&amp;quot;proj&amp;quot;&lt;br /&gt;
以下のように置き換えてください:&lt;br /&gt;
 CELERY_APP=&amp;quot;test_task&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{ic|celery@&amp;#039;&amp;#039;celery&amp;#039;&amp;#039;.service}} を[[再起動]]してください。&lt;br /&gt;
&lt;br /&gt;
=== タスクを定期的に実行 ===&lt;br /&gt;
&lt;br /&gt;
Celery Beat を使うことでタスクを定期実行することができます。基本的なセットアップは [http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html Celery のドキュメントページ] で説明されています。&lt;br /&gt;
&lt;br /&gt;
{{ic|celery.py}} の中で {{ic|CELERYBEAT_SCHEDULE}} を指定したい場合、Celery がタスクを認識できるように {{ic|app.conf}} プレフィックスを追加する必要があります。その後 Celery デーモンを起動するときに {{ic|1=--beat --schedule=/var/lib/celery/celerybeat-schedule}} パラメータを追加してください。さらに、{{ic|/var/lib/celery}} ディレクトリが存在している必要があり所有者は celery を実行するユーザーでなければなりません。&lt;br /&gt;
&lt;br /&gt;
== chroot で Celery を実行 (実験的) ==&lt;br /&gt;
&lt;br /&gt;
[[chroot]] に celery をインストールすることでセキュリティを向上させることができます。セキュリティを高めるために、chroot には Celery アプリケーションを実行するのに必要なファイルだけを含めて、ファイルのパーミッションは出来る限り最小にします。例えば {{ic|/usr/bin}} などのディレクトリは所有者を root にして読み込み・書き込みができないようにします。&lt;br /&gt;
&lt;br /&gt;
このセクションは [[Nginx#chroot でインストール]]を Celery 用に改変しています。&lt;br /&gt;
&lt;br /&gt;
{{Warning|あくまで実験的なセットアップであるため安定して使える設定ができる保証はありません。自己責任で行ってください。}}&lt;br /&gt;
&lt;br /&gt;
=== chroot ディレクトリとデバイスの作成 ===&lt;br /&gt;
&lt;br /&gt;
Arch にはデフォルトで {{ic|http}} ユーザーとグループが存在し、celery を動かすのに使うことができます。chroot は {{ic|/srv/http/apps/celery}} に作成します:&lt;br /&gt;
&lt;br /&gt;
 # mkdir -p /srv/http/apps/celery&lt;br /&gt;
 # cd /srv/http/apps/celery&lt;br /&gt;
&lt;br /&gt;
Celery は {{ic|/dev/null}} と {{ic|/dev/urandom}} を必要とします。{{ic|/dev/random}} が存在しなくても Celery は起動時にクラッシュしません。chroot にインストールするには {{ic|/dev/}} ディレクトリを作成して &amp;#039;&amp;#039;mknod&amp;#039;&amp;#039; でデバイスを追加してください。{{ic|/dev/}} を全てマウントしないようにすることで、攻撃者は {{ic|/dev/sda1}} など重要なデバイスにアクセスするのが難しくなります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* {{ic|/srv/http/apps/celery}} は no-dev オプションを付けずにマウントしてください。&lt;br /&gt;
* &amp;#039;&amp;#039;mknod&amp;#039;&amp;#039; のオプションについては {{ic|man mknod}} や {{ic|&amp;lt;nowiki&amp;gt;ls -l /dev/{null,urandom}&amp;lt;/nowiki&amp;gt;}} を見てください。}}&lt;br /&gt;
 # mkdir /srv/http/apps/celery/dev&lt;br /&gt;
 # mknod -m 0666 /srv/http/apps/celery/dev/null c 1 3&lt;br /&gt;
 # mknod -m 0666 /srv/http/apps/celery/dev/random c 1 8&lt;br /&gt;
 # mknod -m 0444 /srv/http/apps/celery/dev/urandom c 1 9&lt;br /&gt;
&lt;br /&gt;
=== 必要なディレクトリの作成 ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|python-virtualenv}} を使って必要な python のファイルを持ち込むのが元のアイデアですが、virtualenv は半分ほどの作業しか行わず、chroot で Celery を実行するには他の依存関係を解消する必要があります。virtualenv で作成した環境に調整を加えます:&lt;br /&gt;
&lt;br /&gt;
 # virtualenv --always-copy /srv/http/apps/celery&lt;br /&gt;
&lt;br /&gt;
必要なディレクトリを作成:&lt;br /&gt;
&lt;br /&gt;
 # cd /srv/http/apps/celery&lt;br /&gt;
 # mkdir {usr,dev,etc,run,tmp,var,proc}&lt;br /&gt;
 # mv {lib,bin,include} usr&lt;br /&gt;
 # ln -s usr/lib lib&lt;br /&gt;
 # ln -s usr/bin bin&lt;br /&gt;
 # ln -s usr/lib lib64&lt;br /&gt;
 # ln -s usr/include include&lt;br /&gt;
 # cd usr/&lt;br /&gt;
&lt;br /&gt;
{{Note|64ビットのカーネルを使っている場合、{{ic|lib64}} と {{ic|usr/lib64}} から {{ic|usr/lib}} へのシンボリックリンクを作成してください: {{ic|cd $JAIL; ln -s usr/lib lib64}} と {{ic|cd $JAIL/usr; ln -s lib lib64}} を実行。}}&lt;br /&gt;
&lt;br /&gt;
 # ln -s lib lib64&lt;br /&gt;
&lt;br /&gt;
Celery は {{ic|/proc/loadavg}} を必要とします。{{ic|/srv/http/apps/celery/tmp}} と {{ic|/srv/http/apps/celery/run}} でバインドマウントしてください。攻撃者がメモリを占有できないように容量は制限します:&lt;br /&gt;
&lt;br /&gt;
 # touch /srv/http/apps/celery/proc/loadavg&lt;br /&gt;
 # mount --bind /proc/loadavg /srv/http/apps/celery/proc/loadavg&lt;br /&gt;
 # mount -t tmpfs none /srv/http/apps/celery/run -o &amp;#039;noexec,size=1M&amp;#039;&lt;br /&gt;
 # mount -t tmpfs none /srv/http/apps/celery/tmp -o &amp;#039;noexec,size=100M&amp;#039;&lt;br /&gt;
&lt;br /&gt;
再起動後もマウントを維持するため、以下のエントリを {{ic|/etc/fstab}} に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 tmpfs   /srv/http/apps/celery/run   tmpfs   rw,noexec,relatime,size=1024k   0       0&lt;br /&gt;
 tmpfs   /srv/http/apps/celery/tmp   tmpfs   rw,noexec,relatime,size=102400k 0       0&lt;br /&gt;
 /proc/loadavg /srv/http/apps/celery/proc/loadavg none bind&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
celery のログフォルダを作成:&lt;br /&gt;
&lt;br /&gt;
 # mkdir -p /srv/http/apps/celery/var/log/celery&lt;br /&gt;
 # chown http:http /srv/http/apps/celery/var/log/celery&lt;br /&gt;
&lt;br /&gt;
=== chroot の作成 ===&lt;br /&gt;
&lt;br /&gt;
python の依存パッケージをコピー:&lt;br /&gt;
&lt;br /&gt;
 # cp $(ldd /usr/bin/python | grep /usr/lib | sed -sre &amp;#039;s/(.+)(\/usr\/lib\/\S+).+/\2/g&amp;#039;) /srv/http/apps/celery/lib&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|linux-vdso.so}} をコピーしないでください: 本当のライブラリではなく {{ic|/usr/lib}} には存在しません。64ビット環境の場合 {{ic|ld-linux-x86-64.so}} が {{ic|/lib64}} にあります。}}&lt;br /&gt;
&lt;br /&gt;
chroot から実行するため、通常の virtualenv は機能しません。完全な python のライブラリフォルダをコピーする必要があります (site-packages は除く):&lt;br /&gt;
&lt;br /&gt;
 # mv /srv/http/apps/celery/lib/python3.5/site-packages /tmp &lt;br /&gt;
 # rm -r /srv/http/apps/celery/lib/python3.5/* &lt;br /&gt;
 # mv /tmp/site-packages /srv/http/apps/celery/lib/python3.5/&lt;br /&gt;
 # &lt;br /&gt;
 # cp -r -p /usr/lib/python3.5 /tmp&lt;br /&gt;
 # rm -r /tmp/python3.5/site-packages&lt;br /&gt;
 # mv /tmp/python3.5/* /srv/http/apps/celery/lib/python3.5/&lt;br /&gt;
&lt;br /&gt;
celery をインストール:&lt;br /&gt;
&lt;br /&gt;
 # source /srv/http/apps/celery/bin/activate&lt;br /&gt;
 # pip install celery&lt;br /&gt;
&lt;br /&gt;
Celery は {{ic|libssl}} を必要とします:&lt;br /&gt;
&lt;br /&gt;
 # cp $(ldd /usr/lib/libssl.so.1.0.0 | grep /usr/lib | sed -sre &amp;#039;s/(.+)(\/usr\/lib\/\S+).+/\2/g&amp;#039;) /srv/http/apps/celery/usr/lib&lt;br /&gt;
 # cp /usr/lib/libssl.so* /srv/http/apps/celery/usr/lib&lt;br /&gt;
&lt;br /&gt;
マルチスレッディングを使用する場合 Celery は {{ic|libgcc_s}} を必要とします:&lt;br /&gt;
 # cp /usr/lib/libgcc_s* /srv/http/apps/celery/usr/lib&lt;br /&gt;
&lt;br /&gt;
 # cp $(ldd /usr/lib/libssl.so.1.0.0 | grep /usr/lib | sed -sre &amp;#039;s/(.+)(\/usr\/lib\/\S+).+/\2/g&amp;#039;) /srv/http/apps/celery/usr/lib&lt;br /&gt;
 # cp /usr/lib/libssl.so* /srv/http/apps/celery/usr/lib&lt;br /&gt;
&lt;br /&gt;
Celery は {{ic|/bin/getent}} を必要とし、さらに {{ic|libnss_files}} も必要です:&lt;br /&gt;
&lt;br /&gt;
 # cp /bin/getent /srv/http/apps/celery/bin&lt;br /&gt;
 # cp /lib/libnss_files* /srv/http/apps/celery/lib&lt;br /&gt;
&lt;br /&gt;
chroot 後に celery を起動する前に {{ic|$HOME}} を登録するのに {{ic|/bin/env}} が必要です:&lt;br /&gt;
&lt;br /&gt;
 # cp /bin/env /srv/http/apps/celery/bin&lt;br /&gt;
&lt;br /&gt;
タスクモジュールをコピー (以下の例ではタスクモジュールの名前が {{ic|test_task}} で {{ic|/lib/python3.5/site-packages/test_task}} に保存されています):&lt;br /&gt;
&lt;br /&gt;
 # cp -r /lib/python3.5/site-packages/test_task lib/python3.5/site-packages&lt;br /&gt;
&lt;br /&gt;
必要なライブラリやシステムファイルなどをコピー:&lt;br /&gt;
&lt;br /&gt;
 # cp -rfvL /etc/{services,localtime,nsswitch.conf,nscd.conf,protocols,hosts,ld.so.cache,ld.so.conf,resolv.conf,host.conf} /srv/http/apps/celery/etc&lt;br /&gt;
&lt;br /&gt;
chroot 用に制限したユーザー・グループファイルを作成します。システムユーザーやグループが攻撃者から操られないようにするためです。&lt;br /&gt;
&lt;br /&gt;
{{hc|/srv/http/apps/celery/etc/group|&lt;br /&gt;
http:x:33:&lt;br /&gt;
nobody:x:99:&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/srv/http/apps/celery/etc/passwd|&lt;br /&gt;
http:x:33:33:http:/:/bin/false&lt;br /&gt;
nobody:x:99:99:nobody:/:/bin/false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/srv/http/apps/celery/etc/shadow|&lt;br /&gt;
http:x:14871::::::&lt;br /&gt;
nobody:x:14871::::::&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/srv/http/apps/celery/etc/gshadow|&lt;br /&gt;
http:::&lt;br /&gt;
nobody:::&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== chroot のパッケージ ===&lt;br /&gt;
&lt;br /&gt;
パッケージを chroot にコピーしてください。&lt;br /&gt;
{{Tip|python のパッケージ方法については [http://python-packaging-user-guide.readthedocs.org/en/latest/distributing/#configuring-your-project packaging] や [http://docs.celeryproject.org/en/latest/getting-started/next-steps.html#our-project celery project structure] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
プロジェクトが {{ic|your_project}} ディレクトリに存在し以下のような構造となっている場合:&lt;br /&gt;
 .&lt;br /&gt;
 |-setup.py&lt;br /&gt;
 |-CHANGES.txt&lt;br /&gt;
 |-MANIFEST.in&lt;br /&gt;
 |-README.txt&lt;br /&gt;
 |-package_name&lt;br /&gt;
    |-__init__.py&lt;br /&gt;
    |-celery.py&lt;br /&gt;
    |-task_1.py&lt;br /&gt;
    |-task_2.py&lt;br /&gt;
    |-(...)&lt;br /&gt;
&lt;br /&gt;
開発モードでパッケージをインストール:&lt;br /&gt;
&lt;br /&gt;
 # cd /srv/http/apps/celery/your_project&lt;br /&gt;
 # source ../bin/activate&lt;br /&gt;
 # pip install -e .&lt;br /&gt;
&lt;br /&gt;
以下のファイルを作成してください:&lt;br /&gt;
{{hc|/srv/http/apps/celery/lib/python3.5/site-packages/package_name.egg-link|2=/your_project&lt;br /&gt;
.}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/srv/http/apps/celery/lib/python3.5/site-packages/easy-install.pth|2=/your_project&lt;br /&gt;
(...)}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* easy-install.pth には virtualenv の中にインストールした他のパッケージを記述します。your_project を指し示さないエントリを修正しないでください。&lt;br /&gt;
* {{ic|python setup.py develop}} を実行してパッケージをインストールすることもでき、その場合は {{ic|/srv/http/apps/celery/lib/python3.5/site-packages/setuptools.pth}} を更新する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/srv/http/apps/celery/lib/python3.5/site-packages/setuptools.pth|2=/usr/lib/python3.5/site-packages}}&lt;br /&gt;
&lt;br /&gt;
=== chroot のテスト ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行することで chroot が正しく設定されているか確認できます:&lt;br /&gt;
&lt;br /&gt;
 # /usr/bin/chroot --userspec=root:root /srv/http/apps/celery env -i HOME=/ /usr/bin/python -m celery worker -c 10 -A package_name --uid=33 --gid=33 --pidfile=/run/celery.pid --logfile=/var/log/celery/celery.log --loglevel=&amp;quot;INFO&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Celery は root で起動しますが、http ユーザーに移行されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 上記のテストを実行する前に RabbitMQ を起動しておく必要があります。&lt;br /&gt;
* プロジェクトのブローカーの認証情報は RabbitMQ の設定と合わせておく必要があります。&lt;br /&gt;
* celery/rabbitmq のトラフィックが通過できるように設定されているかファイアウォールを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
=== systemd の chroot ユニット ===&lt;br /&gt;
&lt;br /&gt;
systemd ユニットを作成:&lt;br /&gt;
{{hc|/etc/systemd/system/celery.service|2=[Unit] &lt;br /&gt;
Description=Celery Nodes Daemon &lt;br /&gt;
After=network.target &lt;br /&gt;
&lt;br /&gt;
[Service] &lt;br /&gt;
Type=oneshot &lt;br /&gt;
ExecStart=/usr/bin/chroot --userspec=root:root /srv/http/apps/celery /usr/bin/env -i HOME=/ /usr/bin/python -m celery multi start 2 -A package_name --uid=33 --gid=33 --pidfile:1=/run/celery1.pid --pidfile:2=/run/celery2.pid --logfile=/var/log/celery/celery.log &lt;br /&gt;
ExecStop=/usr/bin/chroot --userspec=root:root /srv/http/apps/celery /usr/bin/python -m celery multi stopwait 2 --uid=33 --gid=33 --pidfile:1=/run/celery1.pid --pidfile:2=/run/celery2.pid --logfile=/var/log/celery/celery.log --loglevel=&amp;quot;INFO&amp;quot; &lt;br /&gt;
ExecReload=/usr/bin/chroot --userspec=root:root /srv/http/apps/celery /usr/bin/python -m celery multi restart 2 -A package_name --uid=33 --gid=33 --pidfile:1=/run/celery1.pid --pidfile:2=/run/celery2.pid --logfile=/var/log/celery/celery.log &lt;br /&gt;
KillMode=control-group &lt;br /&gt;
RemainAfterExit=yes &lt;br /&gt;
&lt;br /&gt;
[Install] &lt;br /&gt;
WantedBy=multi-user.target}}&lt;br /&gt;
&lt;br /&gt;
{{ic|celery.service}} を[[起動]]してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
[[#systemd の chroot ユニット]]が特に問題を報告しないのに celery サービスが機能しない場合、コンソールから chroot の中の celery を起動して詳しくログを確認することができます。例:&lt;br /&gt;
&lt;br /&gt;
 # /usr/bin/chroot --userspec=root:root /srv/http/apps/celery /usr/bin/env -i HOME=/ /usr/bin/python -m celery worker -A package_name --uid=33 --gid=33 --pidfile=/run/celery.pid --logfile=/var/log/celery/celery.log --loglevel=&amp;quot;INFO&amp;quot;&lt;/div&gt;</summary>
		<author><name>Kusakata</name></author>
	</entry>
</feed>