如何在 Python 中调试和测试 API 客户端的重试逻辑
how to debug and test retry logic of API client in Python
我刚刚基于“请求”库为 Instagram 开发了原始 API 客户端。下一个目标是实现 400+ 和 500+ 错误代码的重试逻辑。有很多示例如何执行此操作,但我想知道如何测试解决方案。
它应该是某个函数随机决定是将请求传递给 API 门户还是传递给 return 某些错误代码?
或者地球上有什么地方可以用来练习不可靠的API?
或者某些服务器故意生成错误?
您可以使用此启动脚本创建一个小型 HTTP 服务器:
from http.server import BaseHTTPRequestHandler, HTTPServer
hostName = "localhost"
serverPort = 8080
class MyServer(BaseHTTPRequestHandler):
def do_GET(self):
code = self.path.split('/')[1]
# do stuff here
self.send_response(int(code))
self.send_header("Content-type", "text/html")
self.end_headers()
if __name__ == '__main__':
webServer = HTTPServer((hostName, serverPort), MyServer)
try:
webServer.serve_forever()
except KeyboardInterrupt:
pass
webServer.server_close()
使用方法:
import requests
r = requests.get('http://localhost:8080/403')
print(r.status_code)
# Output
403
我刚刚基于“请求”库为 Instagram 开发了原始 API 客户端。下一个目标是实现 400+ 和 500+ 错误代码的重试逻辑。有很多示例如何执行此操作,但我想知道如何测试解决方案。 它应该是某个函数随机决定是将请求传递给 API 门户还是传递给 return 某些错误代码? 或者地球上有什么地方可以用来练习不可靠的API? 或者某些服务器故意生成错误?
您可以使用此启动脚本创建一个小型 HTTP 服务器:
from http.server import BaseHTTPRequestHandler, HTTPServer
hostName = "localhost"
serverPort = 8080
class MyServer(BaseHTTPRequestHandler):
def do_GET(self):
code = self.path.split('/')[1]
# do stuff here
self.send_response(int(code))
self.send_header("Content-type", "text/html")
self.end_headers()
if __name__ == '__main__':
webServer = HTTPServer((hostName, serverPort), MyServer)
try:
webServer.serve_forever()
except KeyboardInterrupt:
pass
webServer.server_close()
使用方法:
import requests
r = requests.get('http://localhost:8080/403')
print(r.status_code)
# Output
403