先贴出来错误: RuntimeError: There is no current event loop in thread 'Thread-2'. 问题描述: 我使用 asyncio,aiohttp 进行了数据的抓取,想把这一模块封装成一个接口,调用接口的时候就会报错。 本人小白- - 对 flask 理解不深,不知道是接口写的有问题,还是哪里的问题。
贴出代码: 开启事件循环: def run(self, name, sku, page_start, page_end, sort, price_start, price_end): loop = asyncio.get_event_loop() asyncio.set_event_loop(loop) loop.run_until_complete( self.async_run(start_page, end_page, goods_name, rank_type, price))
flask 接口:
import flask import json import asyncio from flask import Flask, request from jd_global_shopping import jd_qqg
app = Flask(name) jd = jd_qqg()
@app.route("/global_shopping", methods=["POST"]) def check(): jd = jd_qqg() params = flask.request.json res = {'return_code': '200', 'return_info': '处理成功', 'result': ''}
if params:
name = params.get('name')
sku = params.get('sku')
page_start = params.get('page_start')
page_end = params.get('page_end')
# type = params.get('type')
sort = params.get('sort')
price_start = params.get('price_start', '')
price_end = params.get('price_end', '')
if name and page_start and page_end and sort:
if type(name) != str:
res = {"error_code": 3003, "msg": "输入关键字格式错误"}
# elif 'item.jd.hk' not in sku or not sku.isdigit():
# res = {"error_code": 3004, "msg": "输入链接格式错误"}
elif not page_start.isdigit():
res = {"error_code": 3004, "msg": "输入页码格式错误"}
elif not page_end.isdigit():
res = {"error_code": 3004, "msg": "输入页码格式错误"}
elif not sort.isdigit():
res = {"error_code": 3004, "msg": "输入类型格式错误"}
else:
jd.run(name, sku, page_start, page_end, sort, price_start, price_end)
else:
res = {"error_code": 3007, "msg": "必填参数未填写"}
else:
res = {"error_code":3002,"msg":"入参必须是 json 类型"}
return json.dumps(res, ensure_ascii=False)
if name == "main": app.run(port=8888, debug=True)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.