我正在学习如何为Discord-bot项目创建自定义API,因此我将aiohttp用作低级服务器(因为它允许具有非阻塞功能,因此可以使用discord.Client。 run()阻止函数)。
我开始在我的计算机(最新的macOS)上进行一些试验,因此在localhost模式下,一切运行正常。但是后来我尝试在vps(Debian 9)上使用它,当我从计算机上调用API时,经过大约30秒钟的等待,我只会收到“连接异常终止”错误。
我还尝试在我的vps上以本地主机模式运行API,也可以正常工作。
我的vps在Debian 9上运行,其Apache2(2.4.25),最新的PHP(7.3.8)。 我认为问题可能是由于ssl配置所致,因为我的域将所有内容都重定向到https://zrunner.me(http和https请求)。但是不知道如何解决。
我还在两个设备上都使用了Python 3.7.4,分别是请求(2.22.0)和aiohttp(3.5.4)。希望我不要忘记任何有用的信息。
服务器的定义方式(https版本):
async def handler(request):
#blah blah
server = web.Server(handler)
runner = web.ServerRunner(server)
await runner.setup()
ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
# Those path are the one given when I created the ssl certificate
ssl_context.load_cert_chain('/etc/letsencrypt/live/zrunner.me/fullchain.pem', '/etc/letsencrypt/live/zrunner.me/privkey.pem')
site = web.TCPSite(runner, '51.77.212.245', 8080, ssl_context=ssl_context)
await site.start()
现在是本地主机版本:
async def handler(request):
#blah blah
server = web.Server(handler)
runner = web.ServerRunner(server)
await runner.setup()
site = web.TCPSite(runner, 'localhost', 8080)
await site.start()
当我尝试在计算机上使用它时,我使用的是什么(此URL确实存在,并且此api-key系统是由我自己创建的,在本地工作得很好)
import requests
requests.get('https://zrunner.me:8080/user/get/id:279568324260528128',headers={'API-Key':'1ZOIFvzfVr2yFHOoPXfBTDyMN'})
因此第一个不起作用,第二个不起作用。
当我使用第1个服务器时,在服务器端没有任何错误,甚至没有调用handler()
函数。
我从客户端得到的错误是requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
。
我试图提供尽可能多的信息,但是如果您需要更多信息,请随时询问。如果有英文错误,我深表歉意,因为这不是我的母语。并预先感谢您的回答!