首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用ChromeDriver Selenium CeleryPython的文件对象上的set_nonblocking()方法(Windows管道不支持非阻塞I/O

不使用ChromeDriver Selenium CeleryPython的文件对象上的set_nonblocking()方法(Windows管道不支持非阻塞I/O
EN

Stack Overflow用户
提问于 2019-10-29 15:49:45
回答 3查看 396关注 0票数 0

我用celery初始化了一个webdriver对象,但在windows上报告了这个错误。

代码语言:javascript
复制
set_nonblocking() on a file object with no setblocking() method (Windows pipes don't support non-blocking I/O)

代码试用:

代码语言:javascript
复制
celery_app = Celery()
celery_app.config_from_object('config.celeryconfig')
from celery import Task
from selenium import webdriver
eventlet.monkey_patch(os=False)



class GetDriver(Task):
    test = 'test'
    chromedriver_path = "chromedriver.exe"

    driver = webdriver.Chrome(executable_path=chromedriver_path)

@celery_app.task(base=GetDriver, bind=True)
def demo(self, params):
    print(params)
    print(self.test)

cellery可以在初始化时初始化webdriver对象吗?

EN

回答 3

Stack Overflow用户

发布于 2019-10-29 15:55:29

代码语言:javascript
复制
celery_app = Celery()
celery_app.config_from_object('config.celeryconfig')
from celery import Task
from selenium import webdriver
eventlet.monkey_patch(os=False)



class GetDriver(Task):
    test = 'test'
    chromedriver_path = "chromedriver.exe"

    driver = webdriver.Chrome(executable_path=chromedriver_path)

@celery_app.task(base=GetDriver, bind=True)
def demo(self, params):
    print(params)
    print(self.test)
票数 0
EN

Stack Overflow用户

发布于 2019-11-26 20:26:18

此错误消息...

代码语言:javascript
复制
set_nonblocking() on a file object with no setblocking() method (Windows pipes don't support non-blocking I/O)

...is观察到,在尝试启动/生成新的浏览上下文时,python-2.7解释器无法找到ChromeDriver二进制文件,即Chrome Browser会话。

在您的代码块中,您使用了:

代码语言:javascript
复制
chromedriver_path = "chromedriver.exe"
driver = webdriver.Chrome(executable_path=chromedriver_path)

您的程序无法定位chromedriver.exe.因此出现了错误。

解决方案

您需要指出ChromeDriver的绝对路径,如下所示:

代码语言:javascript
复制
chromedriver_path = r'C:\path\to\chromedriver.exe'
driver = webdriver.Chrome(executable_path=chromedriver_path)

参考文献

您可以在以下位置找到几个相关的讨论:

超外

Non-blocking read on a subprocess.PIPE in python

票数 0
EN

Stack Overflow用户

发布于 2019-11-27 11:14:29

您是否在启动芹菜服务时添加了参数-P eventlet?我遇到了同样的问题,然后我删除了参数,问题就解决了。

代码语言:javascript
复制
celery -A proj worker -l info  -P eventlet   (old)
celery -A proj worker -l info
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58603198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档