m0_59470759 2024-07-02 13:25 采纳率: 0%
浏览 21

titiler发布服务


import logging
from fastapi import FastAPI, HTTPException
from titiler.core.factory import TilerFactory
from starlette.middleware.cors import CORSMiddleware

app = FastAPI(description="COG Server")

# 设置日志记录
logging.basicConfig(level=logging.DEBUG)

# 允许跨域请求
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 允许所有来源的请求
    allow_methods=["*"],  # 允许所有 HTTP 方法
    allow_headers=["*"],  # 允许所有请求头
)

try:
    # 初始化 TilerFactory
    cog = TilerFactory()

    # 包含 COG 路由,并指定前缀
    app.include_router(cog.router, prefix="/cog")

except Exception as e:
    logging.error(f"Error initializing TilerFactory: {e}")
    raise HTTPException(status_code=500, detail="Internal Server Error")

# 启动应用
if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

img

img

用titiler发布cog服务,启动不会报错,但是发布服务后无法访问,可能是什么原因造成的

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-07-02 13:26
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    根据你提供的代码和日志信息,我们可以逐步排查可能的问题:

    1. 404 Not Found 错误:这通常意味着请求的资源在服务器上不存在。在你的 FastAPI 应用中,如果你访问的是根路径 http://127.0.0.1:8000/,但你的路由可能已经被设置为 /cog 前缀,这意味着你需要访问 http://127.0.0.1:8000/cog 来访问由 TilerFactory 提供的服务。

    2. Titiler 路由配置:你的代码中使用了 app.include_router(cog.router, prefix="/cog"),这意味着所有由 TilerFactory 提供的路由都会在 URL 中加上 /cog 前缀。确保你访问的路径包含了这个前缀。

    3. CORS 设置:你的 CORS 设置如下:

      app.add_middleware(
          CORSMiddleware,
          allow_origins=["*"],  # 允许所有来源的请求
          allow_methods=["*"],  # 允许所有 HTTP 方法
          allow_headers=["*"],  # 允许所有请求头
      )
      

      这个设置允许了来自所有来源的请求,理论上应该不会阻止跨域请求。如果问题依旧存在,可能需要检查客户端发出请求的具体头部信息,以确定是否有其他 CORS 相关的问题。

    4. 服务端口和主机设置:你的服务设置为监听所有 IP 地址(host="0.0.0.0")和端口 8000,这是正确的设置,允许从任何 IP 地址访问。

    5. 日志输出:从提供的截图中,没有看到明显的错误信息。日志显示服务已经启动并且正在监听 8000 端口。如果访问 / 路径返回 404,这可能是因为没有为根路径定义任何处理函数或路由。

    6. 参考链接:以下是一些可能有用的参考链接,你可以进一步了解 Titiler 和 FastAPI 的使用:

    如果以上信息还不能解决你的问题,可能需要更详细的日志输出,或者检查是否有其他中间件或配置影响了请求的处理。此外,确保你的客户端请求的 URL 是正确的,并且包含了路由前缀 /cog

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月2日