[{"data":1,"prerenderedAt":176},["ShallowReactive",2],{"project-15840573":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":39,"post_text":30,"what":41,"said":67,"maker_in_thread":112,"shape":121,"grid":124,"attempts":137,"same_week":138,"maker_shows":168,"maker_hidden":169,"reader_version":170,"card":171},"15840573","python-faas-grip","Manage web sockets from AWS Lambda using Fanout","title","Show HN: Manage web sockets from AWS Lambda using Fanout","https:\u002F\u002Fgithub.com\u002Ffanout\u002Fpython-faas-grip","github.com","jkarneges",1512347505,2017,56,7,739,2242,33,"notable","infrastructure","websocket proxy","library",[24,25,26,27,28],"websockets","aws lambda","serverless","grip","fanout","quiet",null,{"positive":32,"neutral":33,"mixed":34,"critical":34},2,1,0,3,{"performance":37,"idea":38},{"positive":34,"critical":34},{"positive":32,"critical":34},[34,35,34,40,40,34,34],5,{"problem":42,"audience":30,"pricing":30,"motivation":30,"time_to_build":30,"stack":51,"openness":65,"stage":66,"team_size":65},{"value":43,"source":44,"evidence":45},"Handling WebSocket connections from serverless AWS Lambda functions","inferred",[46,48],{"id":47},"post",{"id":49,"by":11,"text":50},"15840726","The chat example is running at ws:\u002F\u002F58d6587c.fanoutcdn.com\u002Fprod\u002Fchat if anyone wants to try it. E.g. with wscat: ``` wscat -c ws:\u002F\u002F58d6587c.fanoutcdn.com\u002Fprod\u002Fchat > hello \u003C…",[52,56,61],{"value":53,"source":44,"evidence":54},"Python",[55],{"id":47},{"value":57,"source":58,"evidence":59},"AWS Lambda","maker",[60],{"id":49,"by":11,"text":50},{"value":62,"source":58,"evidence":63},"AWS API Gateway",[64],{"id":49,"by":11,"text":50},"unknown","launched",{"praise":68,"objections":81,"requests":89,"questions":94,"alternatives":99},[69],{"value":70,"source":71,"evidence":72},"Interesting approach to WebSockets","commenter",[73,77],{"id":74,"by":75,"text":76},"15841198","candiodari","Interesting approach. We could really use a reverse-proxy-for-websockets thing.",{"id":78,"by":79,"text":80},"15840869","ivan_ah","Nice. The Websockets events as HTTP request response is similar to the architecture of Django Channels.",[82],{"value":83,"source":71,"evidence":84},"Unclear global infrastructure and regions for clients outside AWS coverage",[85],{"id":86,"by":87,"text":88},"15844302","gtsteve","I hadn't heard of Fanout before. I can't find any info about its global infrastructure - what regions does it serve? It might be helpful in the new year. I'm developing a module…",[90],{"value":91,"source":71,"evidence":92},"A reverse proxy for WebSockets",[93],{"id":74,"by":75,"text":76},[95],{"value":96,"source":71,"evidence":97},"What regions does Fanout serve?",[98],{"id":86,"by":87,"text":88},[100,108],{"value":101,"source":71,"evidence":102},"Django Channels",[103,104],{"id":78,"by":79,"text":80},{"id":105,"by":106,"text":107},"15841577","je42","we just went for aiohttp. django channels didn't scale on even very simple benchmarks. while aiohttp didn't even sweat. that said, making everything async in the python sync…",{"value":109,"source":71,"evidence":110},"aiohttp",[111],{"id":105,"by":106,"text":107},{"comments":35,"answered":33,"key":113},[114,115,118],{"id":49,"text":50},{"id":116,"text":117},"15844679","We have servers in SF, London, and Singapore. http:\u002F\u002Fstatus.fanout.io",{"id":119,"text":120},"15840977","Yup, splitting the session into a series of requests is a good way for Django Channels to rig things up, especially since Django itself doesn't support async yet. We even have a…",{"commenters":40,"max_depth":32,"maker_replies":35,"first_comment_mins":122,"lifespan_hours":123},36,15,[125,127,129,130,132,133,135],[49,34,34,126,11,33],"project\u002Fneutral\u002Fnone",[86,33,35,128,87,34],"project\u002Fneutral\u002Fperformance",[116,33,34,128,11,33],[74,32,40,131,75,34],"project\u002Fpositive\u002Fidea",[78,35,40,131,79,34],[119,35,34,134,11,33],"project\u002Fneutral\u002Fidea",[105,35,34,136,106,34],"other\u002Fneutral\u002Fnone",[],[139,144,149,154,159,164],{"id":140,"name":141,"points":142,"category":143},"15860312","Classical Music Only",273,"consumer_social",{"id":145,"name":146,"points":147,"category":148},"15853345","SeKey",169,"security_privacy",{"id":150,"name":151,"points":152,"category":153},"15851927","Misocoin",151,"learning_science",{"id":155,"name":156,"points":157,"category":158},"15865195","flu.io",140,"web_saas",{"id":160,"name":161,"points":162,"category":163},"15843738","Go Freaking Do It",128,"finance_crypto",{"id":165,"name":166,"points":167,"category":143},"15847575","Echo Podcasts",116,9,false,"v2",{"id":172,"name":5,"line":6,"ai":169,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":30,"top":18,"kw":173,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":174,"url":9,"mix":175,"praise":70,"objection":83,"sub":21},15840573,[24,25,26,27,28],"0305500",[32,33,34,34],1794036561370]