2017-01-11 5 views
0
from celery import Celery 
from celery.worker.control import inspect_command 
app = Celery('tasks', broker='pyamqp://[email protected]//') 

@app.task 
def add(x, y): 
    return x + y 


@inspect_command 
def current_prefetch_count(state): 
    return {'prefetch_count': state.consumer.qos.value} 

からタスクを点検し、私はセロリとのコードを実行しようとしたが、それは私にエラーを与えた:セロリのpython

File"c:\python27\lib\site-packages\kombu\utils\imports.py",line56,insymbo 
_by_name 

typeError: inspect_command() takes exactly 0 arguments (1 given) 

はまた、私はこのsysfile.py

#!/usr/bin/env python 
import platform 
import celery 
import os 
import psutil 
import json 




def Speed_Test(): 
    Speed_list = (os.popen("speedtest-cli --share --simple").read()).split("\n") 
    result = [Speed_list[-2].split(":")[-1]] 
    result.append(Speed_list[-3].split(":")[-1]) 
    return result 

def Sys_Info(): 

    inner_Dict = {} 
    inner_Dict["CPU Model"]=platform.processor() 
    inner_Dict["No of CPU"]=psutil.cpu_count() 
    inner_Dict["Disk info"]=psutil.disk_usage('/') 
    inner_Dict["celery"] = (celery.__version__) 
    inner_Dict["Upload"] = Speed_Test()[0] 
    inner_Dict["Download"] = Speed_Test()[1] 
    return json.dumps(inner_Dict) 
x = Sys_Info() 
print x 
を実行するためにinspect_commandをカスタマイズしたいです

答えて

0

inspect_commandデコレータは、オプションで一連のkwargsを取ります。あなたは、コマンドは、それが呼び出されることが可能な他の名前を持つようにしたい場合は、あなたがaliasを使用することができます。例えば

@inspect_command() 
def current_prefetch_count(state): 
    return {'prefetch_count': state.consumer.qos.value} 

:だから、コールそれに持って

@inspect_command(alias='foo') 
def current_prefetch_count(state): 
    return {'prefetch_count': state.consumer.qos.value} 

あなたは発見することができますこのすべてはcelery.worker.controlのコードを読んでください。

+0

がたくさん –

+0

を助けクエストのおかげで次のものを得ることについても、私はこのsysfile.py –

+0

コールSYS_INFO()を実行するinspect_commandを、カスタマーする募集方法:別のPYファイルがあると はSYS_INFOを統合した結果を取得します()独自のinspectコマンドに機能する –