首页 > 解决方案 > OSError: [WinError 10013] 试图以访问权限禁止的方式访问套接字

问题描述

我正在尝试使用 Huey 作为跨平台任务队列。我找到了https://github.com/pjcunningham/flask-huey-example,我已经克隆并设置了一个用于使用 conda 的 virtualenv(我正在使用 Windows)。我已经按照更新的自述文件进行了操作,并设法让所有三个窗口都正常运行。但是当我打开http://localhost:6060/

[![在此处输入图像描述][2]][2]

我单击发送按钮,这会破坏 Huey_consumer 进程:

$ python ...envs/hueytest1/Scripts/huey_consumer.exe run_huey.huey
[2018-08-06 10:19:25,949] INFO:huey.consumer:MainThread:Huey consumer started with 1 thread, PID 1704
[2018-08-06 10:19:25,949] INFO:huey.consumer:MainThread:Scheduler runs every 1 seconds.
[2018-08-06 10:19:25,949] INFO:huey.consumer:MainThread:Periodic tasks are enabled.
[2018-08-06 10:19:25,950] INFO:huey.consumer:MainThread:UTC is enabled.
[2018-08-06 10:19:25,950] INFO:huey.consumer:MainThread:The following commands are available:
+ send_async_email
+ dummy_task
[2018-08-06 10:19:39,743] INFO:huey.consumer.Worker:Worker-1:Executing queuecmd_send_async_email: ba5e092d-b1de-41cd-8b27-72d11c2b13d8
[2018-08-06 10:19:40,766] ERROR:huey.consumer.Worker:Worker-1:Unhandled exception in worker thread
Traceback (most recent call last):
  File "...\envs\hueytest1\lib\site-packages\huey\consumer.py", line 153, in process_task
    self.huey.execute(task)
  File "...\envs\hueytest1\lib\site-packages\huey\api.py", line 271, in execute
    result = task.execute()
  File "...\envs\hueytest1\lib\site-packages\huey\api.py", line 565, in execute
    return func(*args, **kwargs)
  File "E:\ENVS\r3\hueytest1\app\tasks.py", line 23, in send_async_email
    mail.send(msg)
  File "...\envs\hueytest1\lib\site-packages\flask_mail.py", line 491, in send
    with self.connect() as connection:
  File "...\envs\hueytest1\lib\site-packages\flask_mail.py", line 144, in __enter__
    self.host = self.configure_host()
  File "...\envs\hueytest1\lib\site-packages\flask_mail.py", line 158, in configure_host
    host = smtplib.SMTP(self.mail.server, self.mail.port)
  File "...\envs\hueytest1\lib\smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "...\envs\hueytest1\lib\smtplib.py", line 336, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "...\envs\hueytest1\lib\smtplib.py", line 307, in _get_socket
    self.source_address)
  File "...\envs\hueytest1\lib\socket.py", line 724, in create_connection
    raise err
  File "...\envs\hueytest1\lib\socket.py", line 713, in create_connection
    sock.connect(sa)
OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions

我怎样才能得到这个工作?

标签: pythonflaskflask-mailpython-huey

解决方案


尝试启动 Visdom 服务器时出现完全相同的错误:

OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions

原因是有另一个进程使用与 Visdom 想要使用的端口相同的端口,在我的例子中是端口 8097。

为了调试它,我按照以下步骤操作:

  1. 使用Sysinternals 的 TcpView来查找使用端口的进程。
  2. 如果进程结果是 svchost.exe,那么您需要找到使用此端口的服务。为此,请运行以下命令:`tasklist /svc /FI "PID eq 1234" where replce 1234 from PID you see in TcpView.
  3. 打开 Windows 服务小程序并查找此服务器。在我的情况下,这被证明是“交付优化”或 DOSvc 服务,如果您在大型网络上,它基本上使用 Windows 更新位的 P2P 下载。我暂时关闭了该服务并能够再次打开端口。

推荐阅读