[{"data":1,"prerenderedAt":168},["ShallowReactive",2],{"project-24376541":3},{"id":4,"name":5,"line":5,"line_source":6,"title":7,"url":8,"domain":9,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":31,"aspects":33,"strip":35,"post_text":29,"what":36,"said":77,"maker_in_thread":112,"shape":116,"grid":120,"attempts":129,"same_week":130,"maker_shows":14,"maker_hidden":161,"reader_version":162,"card":163},"24376541","Pub\u002FSub with PostgreSQL under 40 lines of Python code","title","Show HN: Pub\u002FSub with PostgreSQL under 40 lines of Python code","https:\u002F\u002Fgist.github.com\u002Fkissgyorgy\u002Fbeccba1291de962702ea9c237a900c79","gist.github.com","kissgyorgy",1599237643,2020,17,5,1842,3028,61,"shown","infrastructure","pub\u002Fsub messaging","library",[23,24,25,26,27],"postgresql","pub\u002Fsub","listen notify","python","message queue","quiet",null,{"positive":31,"neutral":32,"mixed":32,"critical":32},3,0,{"idea":34},{"positive":31,"critical":32},[14,32,14,32,14],{"problem":37,"audience":50,"pricing":29,"motivation":58,"time_to_build":29,"stack":63,"openness":76,"stage":76,"team_size":76},{"value":38,"source":39,"evidence":40},"Pub\u002Fsub messaging without a separate message broker, using PostgreSQL","inferred",[41,43,47],{"id":42},"post",{"id":44,"by":45,"text":46},"24390376","SahAssar","It can be used as a more durable message queue too by following the recommendations in https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=B81nQLg4RuU",{"id":48,"by":10,"text":49},"24386030","``` > I wonder if you could use this in a Django project with Channels, and stream database changes over websocket to the client.I wonder if you could use this in a Django…",{"value":51,"source":39,"evidence":52},"Python developers who already use PostgreSQL",[53,54],{"id":48,"by":10,"text":49},{"id":55,"by":56,"text":57},"24384746","zach_garwood","Interesting! I wonder if you could use this in a Django project with Channels, and stream database changes over websocket to the client. I think I've found a project for this…",{"value":59,"source":60,"evidence":61},"Simplify the stack by removing the need for a separate broker","maker",[62],{"id":48,"by":10,"text":49},[64,68,72],{"value":65,"source":60,"evidence":66},"Python",[67],{"id":42},{"value":69,"source":60,"evidence":70},"PostgreSQL",[71],{"id":42},{"value":73,"source":60,"evidence":74},"psycopg2",[75],{"id":48,"by":10,"text":49},"unknown",{"praise":78,"objections":96,"requests":101,"questions":102,"alternatives":107},[79,88],{"value":80,"source":81,"evidence":82},"Simple, short implementation idea","commenter",[83,87],{"id":84,"by":85,"text":86},"24392000","zikani_03","Nice. Reminds me of a time I was learning Rust. Did a small test to get Node.JS and Rust to \"communicate\" via Postgres[0] I am curious if this is an approach folks actually use…",{"id":44,"by":45,"text":46},{"value":89,"source":81,"evidence":90},"Useful for Django and websocket streaming",[91,92],{"id":55,"by":56,"text":57},{"id":93,"by":94,"text":95},"24388247","vladsanchez","Yes you can. I used this same technique a long time ago, for cache-invalidation.",[97],{"value":98,"source":81,"evidence":99},"Unclear whether used in production",[100],{"id":84,"by":85,"text":86},[],[103],{"value":104,"source":81,"evidence":105},"Why autocommit isolation level is needed",[106],{"id":55,"by":56,"text":57},[108],{"value":109,"source":81,"evidence":110},"Durable message queues via recommended patterns",[111],{"id":44,"by":45,"text":46},{"comments":113,"answered":113,"key":114},1,[115],{"id":48,"text":49},{"commenters":14,"max_depth":117,"maker_replies":113,"first_comment_mins":118,"lifespan_hours":119},2,1425,47,[121,123,125,126,128],[44,32,14,122,45,32],"project\u002Fpositive\u002Fidea",[84,113,32,124,85,32],"commenter\u002Fneutral\u002Fnone",[55,117,14,122,56,32],[48,117,32,127,10,113],"maker\u002Fneutral\u002Fnone",[93,117,14,122,94,32],[],[131,136,141,146,151,156],{"id":132,"name":133,"points":134,"category":135},"24380969","Linux Upskill Challenge",780,"learning_science",{"id":137,"name":138,"points":139,"category":140},"24422432","Mimestream",403,"productivity",{"id":142,"name":143,"points":144,"category":145},"24381700","Talk",310,"consumer_social",{"id":147,"name":148,"points":149,"category":150},"24407706","Titanoboa",279,"dev_tools",{"id":152,"name":153,"points":154,"category":155},"24370296","typing",237,"creative",{"id":157,"name":158,"points":159,"category":160},"24363493","kiss-orm",220,"languages",false,"v2",{"id":164,"name":5,"line":5,"ai":161,"cat":19,"year":12,"points":13,"comments":14,"rec":28,"s":29,"top":17,"kw":165,"maker":10,"domain":9,"tier":18,"attempts":32,"strip":166,"url":8,"mix":167,"praise":80,"objection":98,"sub":20},24376541,[23,24,25,26,27],"50505",[31,32,32,32],1793991015601]