首页 > 其他分享 >celery传参时的对象转换

celery传参时的对象转换

时间:2023-04-24 14:56:09浏览次数:49  
标签:__ 转换 client celery json 传参时 dict SSH obj

遇到一个有趣的问题,celery delay传入SSH的对象时,报错Object of type SSH is not JSON serializable,分析一下就是只能传json的数据。把所有传入的数据都转成json。

1、因为我传递的是对象,所以要把对象转成json,所以我就自定义了一个JSONEncoder

class MyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, SSH):
            obj.__dict__['arguments']['pkey'] = None
            return obj.__dict__

2、在异步任务里面又将json转成对象

@app.task(name='receive_execute_command', base=CustomTask)
def execute_remote_command(client: json, scripts: str):
    """
    异步执行远程脚本
    :param client:
    :param scripts:
    :return:
    """
    client_json_to_dict = json.loads(client)
    client_json_to_dict['arguments']['pkey'] = SSH.get_private_key()

    new_client_obj = SSH(hostname='none', password='none')
    new_client_obj.__dict__ = client_json_to_dict

    res = new_client_obj.exec_command(scripts, timeout=5)
    return res[1].decode('utf-8')

3、这是调用异步的片段

        elif is_async:
            client_to_json = json.dumps(client, cls=MyEncoder, indent=4)
            execute_remote_command.delay(client_to_json, scripts)
            return ['0', '异步执行中。'.encode('utf-8')]

4、总结下来难点就是对象与json之间的互转。希望能帮助到各位大侠。

5、扩展一下__dict__ (magic方法)

为了方便用户查看类中包含哪些属性,Python 类提供了 __dict__ 属性。需要注意的一点是,该属性可以用类名或者类的实例对象来调用:

  1)用类名直接调用 __dict__,会输出该由类中所有类属性组成的字典;

  2)而使用类的实例对象调用 __dict__,会输出由类中所有实例属性组成的字典。

对于具有继承关系的父类和子类来说,父类有自己的 __dict__,同样子类也有自己的 __dict__,它不会包含父类的 __dict__。

可以参考:http://c.biancheng.net/view/2374.html

标签:__,转换,client,celery,json,传参时,dict,SSH,obj
From: https://www.cnblogs.com/bill2014/p/17347085.html

相关文章

  • 如何通过C#/VB.NET代码将PowerPoint转换为HTML
    利用PowerPoint可以很方便的呈现多媒体信息,且信息形式多媒体化,表现力强。但难免在某些情况下我们会需要将PowerPoint转换为HTML格式。因为HTML文档能独立于各种操作系统平台(如Unix,Windows等)。并且它可以加入图片、声音、动画、影视等内容,还能从一个文件跳转到另一个文件,与世界各地......
  • python工具模块介绍-time 时间访问和转换
    快速入门In[1]:importtime#获取当前时间In[25]:time.strftime("%Y-%m-%d_%H-%M-%S",time.localtime())Out[25]:'2018-06-17_20-05-36'#停顿0.5秒In[26]:time.sleep(0.5)简介功能:时间访问和转换。相关模块:datetime 标准模块。calendar标准模块。下面介......
  • 轻量化3D文件格式转换HOOPS Exchange新特性
    BIM与AEC市场发展现状近年来BIM(建筑信息模型)和AEC(建筑、工程和施工)市场一直保持着持续增长。2014年全球BIM软件市场价值27.6亿美元,而到2022年,预期到达115.4亿美元,复合年增长率保持在19.1%,并且对未来十年BIM增长率的保守估计为10%。世界各地的许多政府现在也在强制要求遵守......
  • C#开发的免费PDF转换、压缩、拆分、合并助手
    《骑士科技星火计划》现推出首款产品—《工程人PDF助手》,为工程人打造属于自己的PDF功能助手,具有PDF转换、压缩、拆分及合并等功能。《工程人PDF助手》为《骑士科技星火计划》首款产品,安装步骤简单,操作便捷,供各位工程人免费使用! 获取方式欢迎关注公众号《工程人的编程课堂》,后......
  • PR语音转字幕转换插件Speech to Text for Premiere Pro
    在SpeechtoTextforPremierePro(PR语音转字幕转换插件中您可以使用以下各种格式转换:中文(PL/PRC)、英文、日语、韩语、意大利语、葡萄牙语、波兰语、法语、意大利语、荷兰语、英语、西班牙语等。如果您对中文、日语、韩语、葡萄牙语、法语、荷兰语等语言感兴趣,可以在这里找到......
  • 不用转换!喜马拉雅音频直接下载!2023可用!
    在如今的快节奏生活中,很多人喜欢在空闲时间里聆听音频专辑,其中喜马拉雅音频专辑成为了许多人的首选。喜马拉雅音频专辑包含了各种各样的主题,如广播剧、情感心理、历史人文、娱乐健康等,内容多样丰富,并且主持人已经成为了听众心中的好伙伴。不过,要享受这些音频专辑,您需要先下载一些......
  • 数制度转换
    一、问题描述:二、设计思路:  三、程序流程图:#include<stdio.h>#definea101/*最大允许字符串长度*/intchar_to_num(charch);/*返回字符对应的数字*/intnum_to_char(intnum);/*返回数字对应的字符*/longother_to_decimal(chartemp[],intother);/*返回由原数转......
  • 音频格式转换器!电脑喜马拉雅音乐格式转mp3
    你是否遇到过想下载喜马拉雅音频专辑,但发现无法下载或者下载音乐格式不是mp3的情况?这时,你就需要一个专业的喜马拉雅mp3音乐格式转换工具。 推荐一款实用的喜马拉雅音乐专辑下载和转换工具。该工具可以帮助用户轻松下载喜马拉雅上的音频资源,支持无损下载,高音质下载,同时提供了多......
  • vue转换js文件 require js
    1define和require方式 不同点define用来定义一个模块的,requireconfig文件配置后才行require 加载模块define来定义模块,还是通过require来加载模块究竟什么时候去使用2TaskExcutionToday文件如何转换compoment方式 ......
  • 进制转换
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#defineMAXCHAR101 //最大允许字符串长度//将字符转换成数字intchar_to_num(charch){ if(ch>='0'&&ch<='9') returnch-'0'; else returnch-'A'+......