OSError:[WinError 10013]尝试以一种受其访问权限禁止的方式访问套接字

时间:2018-08-06 14:23:35

标签: python flask flask-mail python-huey

我正在尝试将Huey用作跨平台任务队列。我发现了https://github.com/pjcunningham/flask-huey-example,我已经克隆并设置了一个虚拟环境来使用conda(我正在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

如何使它正常工作?

2 个答案:

答案 0 :(得分:1)

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

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

原因是,还有另一个进程使用与Visdom要使用的端口相同的端口,在我的情况下是端口8097。

要对此进行调试,请按照以下步骤操作:

  1. 使用TcpView from Sysinternals使用端口查找进程。
  2. 如果该过程为svchost.exe,则需要查找使用此端口的服务。为此,请运行以下命令:`tasklist / svc / FI“ PID eq 1234”,其中从TcpView中看到的PID代表1234。
  3. 打开Windows服务小程序并查找此服务器。在我的情况下,这实际上是“交付优化”或DOSvc服务,如果您在大型网络上,则该服务基本上使用Windows Update位的P2P下载。我暂时关闭了该服务,并能够再次打开端口。

答案 1 :(得分:0)

发生这种情况是因为您的防火墙阻止了SQL Server的连接。 转到Control Panel -> Windows Defender Firewall -> Advance Setting -> Outbound规则(Block network access R local)为红色-> right click -> Properties,然后依次为allow all connectionSave