は、私は、テキストファイルの各行を操作セロリスクリプトを書いたこのCeleryは実際にどのようにタスクを実行しますか?
aaaaabbbb cccc--ddddeee ffff
gggjjjkkk eers--kklliii kkll
...
のようないくつかの行が含まれているディレクトリthe_files
内のテキストファイルを持っています。
from celery import Celery
import os
app = Celery('tasks', broker='amqp://[email protected]//')
path = "the_files/"
@app.task
def do_task_txt():
dir_path = os.listdir(path)
for file in dir_path:
if file.endswith(".txt"):
f = open(path + file, "r")
for line in f:
string1 = line[0:14].replace(" ", "")
string2 = line[16:].replace(" ", "")
#print string1, string2
return string1, string2
f.close()
私はセロリと、このスクリプトを実行すると、それはそれは最初の行のみを示した以下の結果
[tasks]
. tasks.do_task_txt
[2017-03-22 13:51:00,713: INFO/MainProcess] Connected to amqp://guest:**@127.0.0.1:5672//
[2017-03-22 13:51:00,791: INFO/MainProcess] mingle: searching for neighbors
[2017-03-22 13:51:01,966: INFO/MainProcess] mingle: all alone
[2017-03-22 13:51:02,055: INFO/MainProcess] [email protected] ready.
[2017-03-22 13:51:25,624: INFO/MainProcess] Received task: tasks.do_task_txt[77166520-21a8-466e-9522-cb2b1821a185]
[2017-03-22 13:51:26,152: INFO/PoolWorker-2] Task tasks.do_task_txt[77166520-21a8-466e-9522-cb2b1821a185] succeeded in 0.00866508999752s: ('aaaaabbbbcccc', 'ddddeeeffff')
を提供します。
私はこれをおそらくすべての行に表示することを望んでいましたか?
[2017-03-22 13:51:26,152: INFO/PoolWorker-2] Task tasks.do_task_txt[77166520-21a8-466e-9522-cb2b1821a185] succeeded in 0.00866508999752s: ('aaaaabbbbcccc', 'ddddeeeffff'),('gggjjjkkkeers', 'kklliiikkll'),(.....,...)
私はprint string1, string2
を呼び出すことによって、私のスクリプトをチェックし、それは私がこの
aaaaabbbbcccc ddddeeeffff
gggjjjkkkeers kklliiikkll
...
のように期待したものとして結果を印刷する私の質問はどのようにセロリがタスクを実行しないされましたか? do_task_txt
というタスクを実行すると、操作されたファイルから1行だけが表示されます。 1行だけではなく、操作された行をすべて表示するにはどうすればよいですか?
ありがとうございます。