日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python - django+celery+ansibleApi無返回

瀏覽:235日期:2022-09-10 14:47:23

問題描述

1.python調用AnsibleApi遠程執行任務,不用celery的情況下能正確運行,使用的話返回為空.pdb調試發現是調用Ansible返回異常,但具體原因幾天實在無法查出

2.代碼復現如現如下:

tasks.py

from celery import shared_taskfrom .deploy_tomcat2 import django_process@shared_taskdef deploy(jira_num): #return ’hello world {0}’.format(jira_num) #rdb.set_trace() return django_process(jira_num)

deploy_tomcat2.py

from .AnsibleApi import CallApidef django_process(jira_num): server = ’10.10.10.30’ name = ’abc’ port = 11011 code = ’efs’ jdk = ’1.12.13’ jvm = ’xxxx’ if str.isdigit(jira_num):# import pdb# pdb.set_trace()call = CallApi(server,name,port,code,jdk,jvm)return call.run_task()

AnsibleApi.py

#!/usr/bin/env python# -*- coding: utf-8 -*-import loggingfrom .Logger import Loggerfrom django.conf import settingsfrom collections import namedtuplefrom ansible.parsing.dataloader import DataLoaderfrom ansible.vars import VariableManagerfrom ansible.inventory import Inventoryfrom ansible.playbook.play import Playfrom ansible.executor.task_queue_manager import TaskQueueManagerfrom ansible.plugins.callback import CallbackBaseLog = Logger(’/tmp/auto_deploy_tomcat.log’,logging.INFO)class ResultCallback(CallbackBase): def __init__(self, *args, **kwargs):super(ResultCallback ,self).__init__(*args, **kwargs)self.host_ok = {}self.host_unreachable = {}self.host_failed = {} def v2_runner_on_unreachable(self, result):self.host_unreachable[result._host.get_name()] = result def v2_runner_on_ok(self, result, *args, **kwargs):self.host_ok[result._host.get_name()] = result def v2_runner_on_failed(self, result, *args, **kwargs):self.host_failed[result._host.get_name()] = resultclass CallApi(object): user = settings.SSH_USER ssh_private_key_file = settings.SSH_PRIVATE_KEY_FILE results_callback = ResultCallback() Options = namedtuple(’Options’, [’connection’, ’module_path’, ’private_key_file’, ’forks’, ’become’, ’become_method’, ’become_user’, ’check’]) def __init__(self,ip,name,port,code,jdk,jvm):self.ip = ipself.name = nameself.port = portself.code = codeself.jdk = jdkself.jvm = jvmself.results_callback = ResultCallback()self.results_raw = {} def _gen_user_task(self):tasks = []deploy_script = ’autodeploy/tomcat_deploy.sh’dst_script = ’/tmp/tomcat_deploy.sh’cargs = dict(src=deploy_script, dest=dst_script, owner=self.user, group=self.user, mode=’0755’)args = '%s %s %d %s %s ’%s’' % (dst_script, self.name, self.port, self.code, self.jdk, self.jvm)tasks.append(dict(action=dict(module=’copy’, args=cargs),register=’shell_out’))tasks.append(dict(action=dict(module=’debug’, args=dict(msg=’{{shell_out}}’))))# tasks.append(dict(action=dict(module=’command’, args=args)))# tasks.append(dict(action=dict(module=’command’, args=args), register=’result’))# tasks.append(dict(action=dict(module=’debug’, args=dict(msg=’{{result.stdout}}’))))self.tasks = tasks def _set_option(self):self._gen_user_task()self.variable_manager = VariableManager()self.loader = DataLoader()self.options = self.Options(connection=’smart’, module_path=None, private_key_file=self.ssh_private_key_file, forks=None, become=True, become_method=’sudo’, become_user=’root’, check=False)self.inventory = Inventory(loader=self.loader, variable_manager=self.variable_manager, host_list=[self.ip])self.variable_manager.set_inventory(self.inventory)play_source = dict(name = 'auto deploy tomcat', hosts = self.ip, remote_user = self.user, gather_facts=’no’, tasks = self.tasks)self.play = Play().load(play_source, variable_manager=self.variable_manager, loader=self.loader) def run_task(self):self.results_raw = {’success’:{}, ’failed’:{}, ’unreachable’:{}}tqm = Nonefrom celery.contrib import rdb;rdb.set_trace()#import pdb;pdb.set_trace()self._set_option()try: tqm = TaskQueueManager(inventory=self.inventory,variable_manager=self.variable_manager,loader=self.loader,options=self.options,passwords=None,stdout_callback=self.results_callback, ) result = tqm.run(self.play)finally: if tqm is not None:tqm.cleanup()for host, result in self.results_callback.host_ok.items(): self.results_raw[’success’][host] = result._resultfor host, result in self.results_callback.host_failed.items(): self.results_raw[’failed’][host] = result._resultfor host, result in self.results_callback.host_unreachable.items(): self.results_raw[’unreachable’][host]= result._resultLog.info('result is :%s' % self.results_raw)return self.results_raw

復現方法

啟動celery worker:celery -A jira worker -Q queue.ops.deploy -n 'deploy.%h' -l info

另一窗口生產消息:deploy.apply_async(args=[’150’], queue=’queue.ops.deploy’, routing_key=’ops.deploy’)

問題解答

回答1:

有兩種方法解決這個問題,就是關閉assert:1.在celery 的worker啟動窗口設置export PYTHONOPTIMIZE=1或打開celery這個參數-O OPTIMIZATION2.注釋掉python包multiprocessing下面process.py中102行,關閉assert

回答2:

既然都用django,CRUD看來是標配了,那么你不如試試 post_save 這個 signal直接 deploy.delay(**params)

回答3:

python - django+celery+ansibleApi無返回請問解決了沒,我應該是遇到同樣的問題,delay執行有輸出,可實際上沒執行到ansible的操作

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美高清一区| 亚洲精品少妇| 精品视频在线你懂得| 伊人久久成人| 亚洲欧美日本视频在线观看| 在线亚洲精品| 99综合视频| 一区二区三区四区在线观看国产日韩| 91成人精品| 日韩制服丝袜av| 日本大胆欧美人术艺术动态| 亚洲精品黄色| 国产精品久久久久久久久免费高清| 欧美国产先锋| 日韩av专区| 欧美中文一区二区| 国产v综合v| 欧美在线亚洲综合一区| 伊人久久大香线蕉av不卡| 999久久久精品国产| 亚洲精品极品少妇16p| 视频在线观看国产精品| 四虎在线精品| 久久国产生活片100| 日韩高清不卡一区| 国产精品一区二区三区美女 | 欧美成人亚洲| 99riav国产精品| 日韩av中文字幕一区二区三区| 久久国产人妖系列| 国产一区二区三区亚洲综合| 国产精品v日韩精品v欧美精品网站| 精品视频久久| 在线视频观看日韩| 久久国产精品毛片| 国产亚洲字幕| 日韩精品诱惑一区?区三区| 99精品在线免费在线观看| 天堂成人国产精品一区| 国产丝袜一区| 午夜久久中文| 欧美日韩日本国产亚洲在线 | 国产日韩电影| 另类激情亚洲| 免费视频一区二区三区在线观看| 色在线视频观看| 视频一区视频二区中文| 国产日韩一区二区三区在线播放| 日韩免费一区| 亚洲精品免费观看| 日本一区二区高清不卡| 在线亚洲激情| 国产精品调教视频| 久久黄色影院| 日本免费一区二区视频| 日韩黄色大片| 中文字幕成人| 国产精品久久乐| 欧美亚洲精品在线| 欧美亚洲tv| 亚洲婷婷免费| 久久99免费视频| 99精品国产一区二区三区| 色狠狠一区二区三区| 日本中文字幕不卡| 中文字幕成在线观看| 中文字幕一区二区精品区| 久久精品国产免费| 激情91久久| 欧美aⅴ一区二区三区视频| 欧美天堂视频| 在线观看视频免费一区二区三区| 日本亚洲视频| 国产精品久久久久av电视剧| 欧美精品自拍| 麻豆久久久久久| 亚洲+小说+欧美+激情+另类| 国内揄拍国内精品久久| 丝袜脚交一区二区| 久久xxx视频| 亚洲精品在线国产| av免费不卡国产观看| 狠狠色综合网| 中文字幕一区二区三区在线视频| 精品国产一级| 日韩欧美久久| 亚洲在线国产日韩欧美| 日本午夜精品一区二区三区电影| 黑人精品一区| 欧美aa在线视频| 中文字幕一区二区精品区| 久久久久国产| 国产成年精品| 国产精品一二| 最新国产精品视频| 欧美午夜不卡| 久久久久久久久久久妇女| 精品欧美视频| 久久国内精品自在自线400部| 亚洲欧美成人综合| 国产综合婷婷| 深夜视频一区二区| 麻豆精品在线视频| 日韩一区中文| 午夜精品福利影院| 男人的天堂亚洲一区| 亚洲网站视频| 国产99久久| 久久久精品日韩| 日韩在线高清| 国产一区二区三区四区二区| 美女高潮久久久| 97精品久久| 91精品福利观看| 欧美一区二区三区久久精品| 中文字幕亚洲影视| 玖玖精品视频| 欧美+日本+国产+在线a∨观看| а√天堂中文在线资源8| 久久99精品久久久久久园产越南| 日韩精品91亚洲二区在线观看| 只有精品亚洲| 麻豆久久精品| 国产毛片一区| 久久亚洲风情| 国产视频一区免费看| 99pao成人国产永久免费视频| 欧洲激情综合| 亚洲在线电影| 亚洲精品四区| 国产亚洲第一伦理第一区| 久久国内精品视频| 久久国产乱子精品免费女| 日本va欧美va欧美va精品| 国产日韩免费| 国产精品亚洲片在线播放| 免费亚洲一区| 亚洲一区资源| 国产在线不卡| 免费人成网站在线观看欧美高清| 深夜福利一区| 91欧美极品| 美日韩一区二区三区| 国产成人精选| 国产一区二区中文| 蜜桃久久久久久久| 日本精品一区二区三区在线观看视频| 男人操女人的视频在线观看欧美| 玖玖玖国产精品| 青青青国产精品| 红杏一区二区三区| 免费在线小视频| 尹人成人综合网| 亚洲精品中文字幕99999| 国产日韩三级| 电影91久久久| 亚洲国产专区| 日韩国产欧美在线播放| 久久亚州av| 婷婷亚洲五月色综合| 天堂精品久久久久| 欧美激情综合| 免费观看久久av| 亚洲电影有码| 男人的天堂亚洲一区| 国产亚洲欧美日韩在线观看一区二区| 精品伊人久久| 一区二区亚洲精品| 久久精品av麻豆的观看方式| 日韩1区2区| 国产手机视频一区二区| 91嫩草精品| 麻豆成全视频免费观看在线看| 亚洲激情中文| 国产精品一级在线观看| 亚洲福利国产| 日本综合精品一区| 高清不卡亚洲| 日本韩国欧美超级黄在线观看| 亚洲视频国产| 日韩av在线播放网址| 亚洲尤物在线| 精品中文在线| 麻豆中文一区二区| 欧美日韩精品一本二本三本 | 精品美女在线视频| 亚洲精品.com| 人人爽香蕉精品| 国产精品久一| 欧美日韩一二| 伊人精品久久| 日韩久久精品网| 日韩二区在线观看| 99久久精品国产亚洲精品| 性色av一区二区怡红| 日本一区二区免费高清| 在线免费观看亚洲| 香蕉成人av| 久久激五月天综合精品| 亚洲激情av|