worker api
上述代码似乎有很多问题,你来帮我判断:
- 项目采用 SQLmodel 驱动 SQLite 数据库,DB_URL = os.environ.get('DB_URL') or f"sqlite:///{OUTPUT_DIR}/temp.db" ,在别的地方会用到,而且几乎都是同步操作的代码。只有对外开放API接口时, Fastapi 是使用异步接口。
- 如何兼容同步与异步的代码?
- read_keywords_from_file 从表格读取数据,如果涉及到 2k~3w 行的数据读取,是否是一个耗时操作?如果耗时能否移入线程操作
- bulk_import_keywords_to_db 是导入到数据库,如果关键词存在则跳过, 代码中是否能让 SQLite 优雅的批量导入。并且这同样可能是一个耗时操作
- 这是一个已知错误: 025-02-21 20:28:15 | ERROR | excel_load.py:51 :import_keywords - 文件处理失败: (sqlite3.IntegrityError) UNIQUE constraint failed: keywordtask.keyword
[SQL: INSERT INTO keywordtask (keyword, total_results, is_completed, fail_count, created_at) VALUES (?, ?, ?, ?, ?) RETURNING id]
parameters: ('absorb', None, 0, 0, '2025-02-21 20:28:04.936669')
INFO: 127.0.0.1:5911 - "POST /keywords/upload HTTP/1.1" 500 Internal Server Error
worker\api\excel_load.py worker\api\main.py worker\api\search_cli.py
假设这3个文件是构成一个微服务,并且可以启动许多个微服务来批量执行任务。不过目前场景中只需要一个微服务 localhost:8003 。
然后我想在另一个独立的项目中发起微服务请求执行各种任务。
例如 G:\code\upwork\zhang_crawl_bio\ui\backend\main.py 文件是一个UI后端 localhost:5835 ,它跟前端交互。
现在用户在前端上传文件,我应该直接上传到 localhost:8003 还是经过 localhost:5835 进行路由?
如果不用 5835 路由,那么又该如何通知前端有两个 API 地址?
如果用 5835 路由,是否又符合最佳软件设计架构?