代码错误提示:
OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。
报错代码位置:
foo/main.py 28行
s = socketserver.ThreadingTcpserver((config.ip,config.port),MyServer)
代码架构:
conf
--config.py
data
--data.db
foo
-- main.py
--server.py
--models.py
manage.py
conf/config.py代码示例:
ip = "127.0.0.1"
port = 8000
manage.py代码示例:
from foo import main
if @R_419_4267@ == '__main__':
main.ArgvHandler()
foo/main.py代码示例:
import optparse
import socketserver
from .server import MyServer
from conf import config
class ArgvHandler():
def __init__(self):
self.op = optparse.OptionParser()
options,args = self.op.parse_args()
self.verify_args(options,args)
# 程序启动命令检查
def verify_args(self,options,args):
if len(args) > 0:
cmd = args[0]
if hasattr(self,cmd):
func = getattr(self,cmd)
func()
else:
args.insert(0,'start')
return self.verify_args(options,args)
# 启动socket
def start(self):
print('服务端正在工作')
s = socketserver.ThreadingTcpserver((config.ip,MyServer)
s.serve_forever()
foo/main.py代码示例:
import socketserver
import Json
from conf import config
from foo.models import DbSession,User
session = DbSession()
STATUS_CODE = {
250: "InvalID cmd format,e.g: {'action':'get','filename':'test.py','size':344}",
251: "InvalID cmd ",
252: "InvalID auth data",
253: "Wrong username or password",
254: "Passed authentication",
255: "filename doesn't provIDed",
256: "file doesn't exist on server",
257: "ready to send file",
258: "md5 verification",
800: "the file exist,but not enough,is continue? ",
801: "the file exist !",
802: " ready to receive datas",
900: "md5 valdate success"
}
class MyServer(socketserver.BaseRequestHandler):
def handle(self):
while True:
data = self.request.recv(1024).strip()
data = Json.loads(data.decode('utf-8'))
if data.get('action'):
if hasattr(self,data.get('achtion')):
func = getattr(self,data.get('action'))
func(data)
else:
print('无效命令')
else:
print('无效命令')
# 获取用户账号信息
def auth(self,**data):
username = data['username']
password = data['password']
user = self.authentication(username,password)
if user:
self.send_response(254)
else:
self.send_response(253)
# 从数据库提取账号密码
def authentication(self,username,password):
user = session.session.query(User).filter_by(username=username).first()
if user and user.verify_password(password):
self.user = username
return True
def send_response(self,status_code):
res = Json.dumps({"status_code": status_code}).encode('utf-8')
self.request.sendall(res)
def put(self,**data):
pass
foo/models.py代码示例:
from sqlalchemy import create_engine
from sqlalchemy import Column,Integer,String,float
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
import os
from werkzeug.security import generate_password_hash,check_password_hash
basedir = os.path.dirname(os.path.dirname(__file__))
data_f = os.path.join(basedir,'data/data.db')
# 绑定引擎
engine = create_engine('sqlite:///{}'.format(data_f))
# 建立基类
Base = declarative_base()
# 定义User对象
class User(Base):
__tablename__ = 'users'
ID = Column(Integer,primary_key=True)
username = Column(String)
password_hash = Column(String)
space = Column(Integer)
has_space = Column(float,default=0)
@property
def password(self):
raise AttributeError('密码不具有可读性')
@password.setter
def password(self,password):
self.password_hash = generate_password_hash(password)
def verify_password(self,password):
return check_password_hash(self.password_hash,password)
class DbSession:
Session = sessionmaker(bind=engine)
session = Session()
if not os.path.isfile(data_f):
# 创建数据库,如果存在自动替换
Base.Metadata.create_all(engine)
解决结果:
第一种解决方法:
删除原来配置文件,重写配置文件,可能是配置文件出错。
以上是内存溢出为你收集整理的Django OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试全部内容,希望文章能够帮你解决Django OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)