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

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

python - django+celery+ansibleApi無返回

瀏覽:238日期: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久久,三上悠亚国产精品一区二区三区
亚洲精品1区2区| 福利欧美精品在线| 亚洲精品网址| 久久高清国产| 日韩精品一区二区三区中文在线 | 成人日韩精品| 亚洲天堂1区| 中文久久精品| 91福利精品在线观看| 你懂的国产精品| 丰满少妇一区| 亚洲午夜黄色| 日本亚州欧洲精品不卡| 欧美激情麻豆| 日韩在线高清| 久久亚洲美女| 美女视频免费精品| 伊人久久大香线蕉av不卡| 亚洲午夜国产成人| 九九九精品视频| 亚洲激情久久| 日本不卡在线视频| 国产中文在线播放| 免费看精品久久片| 精品视频一区二区三区四区五区| 欧美不卡高清一区二区三区| 蜜臀久久99精品久久久久久9| 欧美精品二区| 国产色综合网| 麻豆成人av在线| 国产精品色网| 精品理论电影在线| 亚洲一区日韩在线| 精品国产乱码久久久| 亚洲欧美日韩国产一区二区| 国产日韩欧美| 自由日本语亚洲人高潮| 国产精品日韩精品中文字幕| 欧美粗暴jizz性欧美20| 国产探花一区二区| 欧产日产国产精品视频| 免费精品视频最新在线| 欧美国产美女| 日韩精品三区四区| 久久精品中文| 国产黄色一区| 蜜桃久久久久久| 日韩欧美一区二区三区免费观看| 日本一不卡视频| 欧美日韩国产在线观看网站| 国产精品nxnn| 中文字幕一区二区av| 日韩国产一区| 国产精品地址| 亚洲精品动态| 九一精品国产| 久久97视频| 日韩精品视频在线看| 在线一区免费| 精精国产xxxx视频在线野外| 91免费精品国偷自产在线在线| 欧美特黄一级大片| 国产一区二区三区亚洲综合| 综合激情视频| 自拍日韩欧美| 国产综合欧美| 日韩欧美一区二区三区免费观看| 久久av综合| 日本少妇精品亚洲第一区| 欧美日韩国产亚洲一区| 亚洲va中文在线播放免费| 国产日韩欧美三区| 五月亚洲婷婷 | 国产精品久久久久久妇女 | 天堂成人免费av电影一区| 日韩av一级| 神马午夜在线视频| 国产精品久久| 国产欧美日本| 欧美性www| 欧美日韩va| 国产伦精品一区二区三区千人斩| 亚洲丝袜啪啪| 蜜臀av一区二区在线免费观看| 好看的av在线不卡观看| 久久精品国产www456c0m| 日韩在线不卡| 播放一区二区| 欧美综合另类| 欧美日韩国产在线一区| 亚洲欧洲午夜| 国产精品色网| 亚洲尤物在线| 久久大逼视频| 亚洲无线观看| 91成人精品观看| 国产精品网在线观看| 老司机免费视频一区二区三区| 国产黄色精品| 国产一区丝袜| 亚洲黄色免费av| 久久精品青草| 视频在线观看91| 日本va欧美va瓶| 欧美国产精品| 在线一区av| 尤物精品在线| 免费在线观看精品| 久久国产视频网| 国产一区二区三区视频在线| 日韩欧美不卡| 中文亚洲欧美| 欧美天堂一区| 国产成人免费| 女人天堂亚洲aⅴ在线观看| 亚洲精品无播放器在线播放| 欧美中文一区| 国产精品久久久久久久久妇女| 久久久夜夜夜| 亚洲欧美一级| 久久免费福利| 欧美aa国产视频| 亚洲一区有码| 捆绑调教美女网站视频一区 | 91精品国产自产精品男人的天堂 | 欧美aa一级| 亚洲一区二区三区免费在线观看| 日韩一二三区在线观看| 成人国产精品久久| 99国内精品| 中文字幕一区二区av| 美女精品久久| 伊人久久亚洲影院| 国产精品日本一区二区三区在线| 欧美亚洲日本精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产日韩高清一区二区三区在线 | 国产精品久久久久久久久久白浆| 黄色欧美在线| 石原莉奈一区二区三区在线观看| 国产欧美亚洲一区| 亚洲国产不卡| 欧美a一区二区| 亚洲欧美日本视频在线观看| 国产精品久久免费视频| 午夜精品亚洲| 欧美经典一区| 亚洲精品乱码久久久久久蜜桃麻豆| 国产不卡一区| 日日夜夜免费精品视频| 午夜av成人| 国产探花在线精品| 亚洲欧洲日本mm| 久久男人av| 亚洲青青久久| 午夜精品网站| 热三久草你在线| 欧美三区不卡| 国产一级一区二区| 亚洲免费福利| 国产亚洲一卡2卡3卡4卡新区| 欧美在线资源| 综合日韩av| 国产剧情在线观看一区| 国产高清一区| 日韩综合在线| 欧美日韩一视频区二区| av不卡在线| av免费不卡国产观看| 国产探花在线精品| 中文字幕日本一区二区| 亚洲先锋成人| 日韩国产在线| 麻豆91小视频| 欧美在线看片| 亚洲精品亚洲人成在线观看| 不卡一区2区| 99久久夜色精品国产亚洲狼| 九九久久国产| 国产福利资源一区| 欧美日韩一区自拍| 日韩中文字幕| 亚欧成人精品| 丝袜亚洲另类欧美| 一本一本久久| 亚洲激情中文在线| 欧美高清不卡| 亚洲国内欧美| 免费av一区二区三区四区| 蜜臀国产一区| a天堂资源在线| 国产一区二区三区黄网站| 91av一区| 国产丝袜一区| 国产精品视频一区二区三区| 青草久久视频| 久久国产麻豆精品| 国产精品一区二区三区四区在线观看 | 亚洲欧洲av| 综合在线一区|