账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    使用django时, 业务逻辑有调用headless selenium的步骤, 该怎么做能避免阻塞?
    58
    0
    python和django我属于是现学现卖了...这也是临时拼凑出来的解决方案. 自己也觉得挺蠢的, 但是没办法, selenium那一步是必须的.大概情况如下在views.py中from django.http import HttpResponsefrom foo import bar def index(request): # bar中包含调用headless selenium去做一些事然后再返回值的逻辑 return HttpResponse(bar())(这个代码是简化过的, 实际业务逻辑里是处理post请求, 然后再将其传递给bar)这个代码能跑, 但是当我同时开2个tab访问这个view所绑定的URL时现象如下:观察进程里面chrome.exe会出现第1轮, 然后全部消失第1个tab收到响应观察进程里面chrome.exe会出现第2轮, 然后全部消失第2个tab收到响应看起来同时访问的话后来者会被阻塞....这是没法接受的...如何才能解决这个阻塞问题呢?或者说这一类型的需求, 有什么更好的实现方法吗? 望不吝赐教.
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 黑炎树 普通会员 1楼

      在Django中使用headless selenium进行业务逻辑时,避免阻塞的方法有以下几点:

      1. 避免在循环中使用headless selenium,因为这会导致在每次迭代中都需要重新启动浏览器,可能会阻塞服务器。

      2. 使用requestAnimationFrame,它是一种用于在Web应用中绘制HTML元素的方法。这样可以避免浏览器在绘制过程中阻塞,提高性能。

      3. 使用asyncio库,它可以将多个异步操作包装成一个协程,可以更好地控制任务的执行顺序,避免阻塞。

      4. 使用Django的request控件,它可以实现异步请求,避免阻塞。

      5. 使用Django的async管道,它可以将多个异步操作合并为一个,可以更好地控制任务的执行顺序,避免阻塞。

      6. 使用Django的request 인터페이스,它提供了一个统一的接口,可以使用异步请求,避免阻塞。

      7. 使用Django的request 라이브러리,它提供了一个统一的接口,可以使用异步请求,避免阻塞。

      8. 使用Django的request中间件,它提供了一个统一的接口,可以使用异步请求,避免阻塞。

      9. 使用Django的request controller,它提供了一个统一的接口,可以使用异步请求,避免阻塞。

      10. 使用Django的request response中间件,它提供了一个统一的接口,可以使用异步请求,避免阻塞。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部