[英]How to get the ip address of a request machine using python (On Sanic)
[英]How can i get request IP address from Google Cloud Logging using Python?
使用 Python 的google-cloud-logging
模塊,我可以遍歷我的 GAE 應用程序的日志消息,並且我想列出請求日志中每個項目的請求 IP 地址。 官方文檔沒有提到如何,並且通過源代碼破解並沒有給我太多希望,因為日志條目主要是TextEntry
很少 object 屬性。
我的代碼是這樣的:
logging_client = logging.Client()
logger = logging_client.logger('projects/MYPROJECT/logs/appengine.googleapis.com%2Frequest_log')
for entry in logging_client.list_entries():
timestamp = entry.timestamp.isoformat()
print("* {}, {}: {}".format(timestamp, type(entry), entry))
在 Google Cloud Console 中查看相同的日志時,我看到每個日志條目都有一個protoPayload.ip
字段——這正是我希望提取的字段。
由於Stackdriver Logging 的 Python 客戶端庫尚不支持此功能,因此目前無法實現。 您可以查看Entry
object及其代碼的文檔,因此無法檢索包含調用者的 Ip 的部分。
但是,您可以通過在每次調用 App Engine 服務時自己記錄此值來做一個技巧,因此您可以檢索它。 調用方 IP 的值在'X-Appengine-User-Ip'
header 中。 您可以使用此代碼作為如何獲取它的示例:
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/')
def hello_world():
ip = request.headers['X-Appengine-User-Ip']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.