我有一个烧瓶应用程序,以芹菜和红葡萄酒作为经纪人,配置如下:
import flask
from werkzeug import secure_filename
from werkzeug.contrib.fixers import ProxyFix
app = flask.Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app)
app.url_map.strict_slashes = False
app.jinja_env.cache = None
from celery import Celery
def make_celery(app):
celery = Celery(__name__, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)
TaskBase = celery.Task
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
celery.Task = ContextTask
return celery
app.config.update(CELERY_BROKER_URL='redis://:{}@127.0.0.1:6379/15'.format(os.environ['REDIS_PASSWD']), CELERY_RESULT_BACKEND='redis://:{}@127.0.0.1:6379/15'.format(os.environ['REDIS_PASSWD']), CELERY_IMPORTS=("aortabot"), CELERY_TASK_RESULT_EXPIRES = 300, CELERY_REDIRECT_STDOUTS_LEVEL="DEBUG")
celery = make_celery(app)
下面是redis db 15的内容:
^{pr2}$但是关于任务(条目2和条目5),芹菜日志说:
[2015-06-28 21:54:45,046: DEBUG/Worker-4] global name 'collections' is not defined
[2015-06-28 21:54:45,048: INFO/MainProcess] Task implement_aortabot[e57cef5c-4ac2-4565-b350-5fb0fc109d13] succeeded in 1.018413604s: None
未定义全局名称“collections”
在我的应用程序中,只有1个@芹菜。任务即使我替换了芹菜。任务使用“pass”,我仍然得到相同的日志消息。在
你能帮我看看可能出了什么问题吗?在
编辑:有1个文件。““收藏”如下:
$ cat aortabot.py | egrep collections
import collections
netpart = collections.defaultdict(dict)
info = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
netpart[route_instance] = collections.defaultdict(dict)
info = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
info = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
netpart[route_instance] = collections.defaultdict(dict)
info = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
info = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
info = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
info = collections.defaultdict(dict)
info['bgp-rib'] = collections.defaultdict(dict)
info['bgp-rib'][name] = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
info = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
info = collections.defaultdict(dict)
info['cos'] = collections.defaultdict(dict)
info['ethernet-mac-statistics'] = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
info = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
info = collections.defaultdict(dict)
tip = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
info = collections.defaultdict(dict)
tip = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
'pfe-statistics']['pfe-local-traffic-statistics'] = collections.defaultdict(dict)
'pfe-statistics']['pfe-hardware-discard-statistics'] = collections.defaultdict(dict)
'pfe-statistics']['pfe-chip-statistics'] = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
netpart['krt-queue'] = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
info = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
info = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
netpart = collections.defaultdict(dict)
netstat = collections.defaultdict(dict)
leveled = collections.OrderedDict(sorted(leveled.items()))
leveled = collections.OrderedDict(
registrar = collections.defaultdict(dict)
注意:代码以前是工作的,在用redisdb0做实验后,然后将它改为db15,问题就显现出来了
编辑:这是唯一定义的芹菜任务,正如所提到的它不是关于任务的,好像我用pass替换函数体我还是遇到了这个问题
@celery.task(name="implement_aortabot", bind=True)
def implement_aortabot(self, diff_):
with app.test_request_context():
try:
uuid_i = uuid.uuid4().hex
timestamp = datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S")
diff_['netelement']['pyez'] = Device(host=diff_['netelement']['ip'], user=net_['app']['user'], passwd=net_['app']['passwd'], port=22, gather_facts=False)
diff_['netelement']['pyez'].open()
jsnap_like.formulate_netconf_data(diff_['netelement']['pyez'], uuid_i, diff_['netelement']['host'])
diff_['netelement']['pyez'].close()
lookup = {
'maintenance': diff_['control']['maintenance'],
'username': diff_['username'],
'timestamp': timestamp,
'message': diff_['netelement']['host'] + " * " + diff_['control']['maintenance'] + " * " + diff_['username'] + " * " + timestamp,
}
if not os.path.exists(net_['registry'] + diff_['netelement']['host'] + ".cfg"):
registrar = collections.defaultdict(dict)
registrar['aortabot'][diff_['netelement']['host']] = {}
registrar['aortabot'][diff_['netelement']['host']][uuid_i] = lookup
write_file(net_['registry'] + diff_['netelement']['host'] + ".cfg", json.dumps(registrar))
else:
registrar = read_file(net_['registry'] + diff_['netelement']['host'] + ".cfg")
registrar = json.loads(registrar)
registrar['aortabot'][diff_['netelement']['host']][uuid_i] = lookup
write_file(net_['registry'] + diff_['netelement']['host'] + ".cfg", json.dumps(registrar))
action = {
'status': True,
'netelement': diff_['netelement']['host'],
'ip': diff_['netelement']['ip'],
'maintenance': diff_['control']['maintenance'],
'timestamp': timestamp,
'username': diff_['username'],
'admin_status': False,
'admin_timestamp': None,
'admin_username': None,
#'id': list(irepo.iter_commits())[0].hexsha,
'id': uuid_i,
}
if not search_pickle_object("tasks.json", action):
insert_pickle_object("tasks.json", action)
insert_pickle_object("activities.json", action)
except Exception, e:
print str(e)
目前没有回答
相关问题 更多 >
编程相关推荐