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

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

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

  1. @api_view(['POST'])
  2. @permission_classes((permissions.AllowAny,))
  3. def crawlRottenTomatoes(request):
  4. print("in crawl tottentomatoes method")
  5. url = request.data["url"]
  6. if not url:
  7. return JsonResponse({'error': 'Missing args'})
  8. if not is_valid_url(url):
  9. return JsonResponse({'error': 'URL is invalid'})
  10. domain = urlparse(url).netloc
  11. msg_dic = {}
  12. try:
  13. scrapyd.schedule(project="movie_spider", spider="rottentomatoes", url=url, domain=domain)
  14. msg_dic['msg'] = "Spider RottenTomatoes for given url is up and running"
  15. except Exception as e:
  16. print("exception")
  17. msg_dic['error'] = "Error running spider for RottenTomatoes"
  18. 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请求。

相关问题