【问题标题】:Python:Rest serverPython:休息服务器
【发布时间】:2017-09-06 13:27:56
【问题描述】:

python服务器报错

检测到对文件 3 的第二次同时读取。除非你真的知道 你在做什么,确保只有一个greenthread可以读取任何 特定的插座。考虑使用 pools.Pool。如果你知道什么 您正在做并且想要禁用此错误,请致电 eventlet.debug.hub_prevent_multiple_readers(False) - 我的线程=;那 THREAD=FdListener('read', 3, , )

功能:

 try:                                                           
                fd.sendto(string_to_send,"/tmp/serversocket")
 except Exception, e:                                           
                ERROR

 while 1:                                                       
                try:                                                   
                        data = fd.recv(struct.calcsize(format_))
                        "parsing of data received"                      


                except Exception, e:                                   
                        err = e.args[0]                                
                        if err == errno.EAGAIN or err == errno.EWOULDBLOCK:
                                 print 'No data available'             
                                 continue                              
                        else:                                          
                               ERROR

具有相同功能的两个功能, 同时访问这些功能时,我收到此错误。

【问题讨论】:

    标签: python multithreading python-2.7 python-3.x rest


    【解决方案1】:

    尝试创建互斥锁

    lock = threading.RLock()
    ...
    with lock:
        # fd stuff
    

    【讨论】:

    • 这是同时处理请求吗?
    • 好吧,只需将互斥锁放在 fd.recv 周围,这样一次只有一个线程在读取。 “接收到的数据解析”部分将是并发的。
    • 但是我想把这些函数当作异步的,但是rlock都是同步类型的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多