QuestDB Docker部署接收数据报错StaticContentProcessor未找到求助
问题原因及解决步骤
1. 修复Docker端口映射问题
QuestDB的WebSocket数据写入服务默认使用9009端口,你当前的Docker命令仅映射了9000端口(HTTP控制台端口),导致cryptofeed无法连接到QuestDB的WebSocket写入服务。重新运行Docker容器,添加9009端口映射:
sudo docker run -p 9000:9000 -p 9009:9009 questdb/questdb
2. 修正cryptofeed代码中的连接配置
你仅修改了QUEST_PORT,但忽略了WebSocket写入需要指定正确的端点路径/imp。找到代码中的连接URL配置,修改为:
QUEST_URL = "ws://localhost:9009/imp"
如果代码通过QUEST_HOST和QUEST_PORT拼接URL,确保拼接后包含/imp路径:
QUEST_HOST = "localhost" QUEST_PORT = 9009 QUEST_URL = f"ws://{QUEST_HOST}:{QUEST_PORT}/imp"
3. 验证数据格式合规性
QuestDB的WebSocket写入要求数据遵循**ILP(Influx Line Protocol)**格式,检查cryptofeed代码中的数据发送逻辑,确保格式正确,示例如下:
await self.send(f"trades,exchange={exchange},symbol={symbol} price={price},amount={amount},id={id} {timestamp}")
其中trades是目标表名,逗号前的是标签字段,逗号后的是数值字段,最后是时间戳,确保无格式错误。
4. 重启服务并验证
- 停止原有Docker容器,用新的端口映射命令启动QuestDB
- 运行修改后的cryptofeed代码
- 访问
localhost:9000的QuestDB控制台,在左侧菜单选择"Tables",查看是否生成了指定的表(如trades)
若仍有问题,可查看QuestDB日志,排查是否存在ILP格式错误或权限问题。
内容的提问来源于stack exchange,提问作者fact
相关产品推荐
相关产品推荐

