socket在django restapi、vue和scrapy之间的编程

mftmpeh8  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(370)

现在编写我的代码能够成功地向django restapi发送post请求,结果分别触发spider并成功地将其输出存储到数据库。因此,我使用的是scrapydapi,您可以在下面的代码片段中看到

@api_view(['POST'])
@permission_classes((permissions.AllowAny,))
def crawlRottenTomatoes(request):
    print("in crawl tottentomatoes method")
    url = request.data["url"]

    if not url:
        return JsonResponse({'error': 'Missing  args'})

    if not is_valid_url(url):
        return JsonResponse({'error': 'URL is invalid'})
    domain = urlparse(url).netloc
    msg_dic = {}
    try:
        scrapyd.schedule(project="movie_spider", spider="rottentomatoes", url=url, domain=domain)
        msg_dic['msg'] = "Spider RottenTomatoes for given url is up and running"
    except Exception as e:
        print("exception")
        msg_dic['error'] = "Error running spider for RottenTomatoes"
    return JsonResponse(msg_dic, safe=False)

但现在我想要的是。当我在websockets上看到的网站/频道爬网和解析完成后,scrapyd会有一些回应。我试着使用websockets,但问题是scrapyd本身就是一个恶魔。我不是真的能够发送一个消息到websocket客户端从好斗。有没有人知道该怎么做,或者可以分享一些可以帮助我的资源?

0lvr5msh

0lvr5msh1#

查看api引用,获得scrapyd作业状态的唯一方法似乎是通过 listjobs https://scrapyd.readthedocs.io/en/stable/api.html#listjobs-json和寻找你的工作 id 在列表中。
另一个选择是监视scrapyd的日志文件。或者您也可以尝试将此功能添加到https://github.com/scrapy/scrapyd 它将在完成作业后发送一个http请求。

相关问题