如何创建一个程序,以便在另一个程序都运行时从另一个程序接收命令?
我的程序需要使用一些模块,而这些模块需要主程序中的某些类,但是,该程序需要正在运行,或者功能无法正常工作
我尝试过:
main.py:
import discord
import command
client = discord.Client()
server = discord.utils.get(client.servers, name='my server')
class User:
def __init__(self, user):
self.user = user
def add_role():
role = discord.utils.get(server.roles, name=role)
client.add_roles(self.user, role)
if __name__ == '__main__':
client.run('my token')
command.execute()
command.py:
import main
def execute():
#do some stuff and get a user object
my_user = main.User(user_obj)
my_user.add_roles('mod')
但是add_roles函数无法获取服务器,因为客户端未运行 如果我将client.run放在main之外,则客户端会尝试运行两次
command.py函数确实需要位于main.py之外
我认为的解决方案是使command.py成为另一个进程,并将命令发送到main.py进程,例如“ ADD ROLE(USER)”,这对于我遇到的其他问题很有用
但是我不知道该如何实现
答案 0 :(得分:0)
我用rpyc建立了本地连接, 像这样的东西:
main.py:
class Network(rpyc.Service):
def __init__(self):
super(Network, self).__init__()
#Objects to share with modules
self.User = User
#Start connection
conn = ThreadedServer(self, port=10000, protocol_config={"allow_public_attrs": True})
t = Thread(target=conn.start)
t.daemon = True
t.start()
if __name__ == '__main__':
conn = Network()
command.py:
conn = rpyc.connect("localhost", 10000)
User = conn.root.User
def execute():
#do some stuff and get a user object
my_user = User(user_obj)
my_user.add_role('mod')