有没有办法设置全局变量以与 aiortc 一起使用?

Is there a way to set a global variable to be used with aiortc?

我正在尝试让 python RTC 客户端使用一个全局变量,以便我可以将它重复用于多个函数。

我将其用于我一直在从事的 RTC 项目,我有一个正常运行的 js 客户端,但功能与 python 的工作方式不同。 服务端和js客户端的函数是我自己的,没有参数,我希望避免在我做的python客户端上使用它们。

我一直在使用他们 github 的 aiortc Cli.py 作为我的 python 客户端应该如何工作的基础。但我不 运行 它是异步的,因为我试图学习和控制事件何时发生。 源代码可以在这里找到,我指的是第 71-72 行的代码 https://github.com/aiortc/aiortc/blob/master/examples/datachannel-cli/cli.py

这是我正在尝试 运行 正确的代码

I've only inserted the code relevant to my current issue


import argparse
import asyncio
import logging
import time

from aiortc import RTCIceCandidate, RTCPeerConnection, RTCSessionDescription
from aiortc.contrib.signaling import add_signaling_arguments, create_signaling

pc = None
channel = None

def createRTCPeer():
    print("starting RTC Peer")
    pc = RTCPeerConnection()
    print("created Peer", pc)
    return pc

def pythonCreateDataChannel():
    print("creating datachannel")
    channel = pc.CreateDataChannel("chat")

createRTCPeer 函数按预期工作,它创建了一个 RTC 对象,但是我的 pythonCreateDataChannel 报告了一个错误,如果我在使用它之前将它设置为 "None"

AttributeError: 'NoneType' object has no attribute 'CreateDataChannel'

它会报告

NameError: name 'channel' is not defined

如果我事先没有在全局范围内设置它,那么对于 pc 也是如此

你试过这个吗:

import argparse
import asyncio
import logging
import time

from aiortc import RTCIceCandidate, RTCPeerConnection, RTCSessionDescription
from aiortc.contrib.signaling import add_signaling_arguments, create_signaling

pc = None
channel = None

def createRTCPeer():
    print("starting RTC Peer")
    global pc
    pc = RTCPeerConnection()
    print("created Peer", pc)

def pythonCreateDataChannel():
    print("creating datachannel")
    global channel
    channel = pc.CreateDataChannel("chat")