如何通过python 3

时间:2018-07-03 23:40:47

标签: python async-await python-asyncio influxdb influxdb-python

我想使用asyncio将UDP消息发送到我的InfluxDB服务器。这是我的同步代码:

import socket
import requests
from logger import get_logger

log = get_logger(__name__)


class InfluxDB(object):
    def __init__(self, username, password, host, port, udp=True, udp_port=4444):
        log.info("InfluxDBClient()")
        self.udp = udp
        if self.udp:
            self.udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            self.udp_port_tuple = (host, udp_port)
        self.session = requests.session()
        self.session.auth = (username, password)
        self.base_url = "http://{}:{}".format(host, port)

    def _query(self, payload, endpoint="/query"):
        log.debug(payload)
        return self.session.post(self.base_url + endpoint, params=payload)

    def _write(self, db, data, endpoint="/write"):
        log.debug("{} \t {}".format(db, data))
        return self.session.post(self.base_url + endpoint, params={"db": db}, data=data)

    def write_udp(self, data_str):
        if self.udp:
            return self.udp_socket.sendto(data_str.encode("utf-8"), self.udp_port_tuple)
        else:
            raise Exception("UDP disabled")

如何使用async / await语法重写“ write_udp”函数?

-编辑7/5/2018-

更具体地说,我不确定如何引用“ socket”的异步等效项。大概有一个基于asyncio的套接字的版本,我将其称为self.udp_socket = socket.socket_asyncio,然后我将通过await socket.socket_asyncio.sendto(....)触发消息,我需要了解的是如何引用此基于asyncio的套接字对象。

0 个答案:

没有答案