From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Tobias Gerdin Newsgroups: gmane.lisp.guile.user Subject: Re: The Web, Continuations, and All That Date: Mon, 30 Jan 2012 20:03:08 +0100 Message-ID: References: <877h0jea8d.fsf@Kagami.home> <4F1FC437.8020801@antono.info> <87y5swcbt9.fsf@Kagami.home> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 X-Trace: dough.gmane.org 1327950203 6512 80.91.229.3 (30 Jan 2012 19:03:23 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 30 Jan 2012 19:03:23 +0000 (UTC) Cc: Guile Users To: Ian Price Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Mon Jan 30 20:03:22 2012 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1RrwVe-00071D-4Y for guile-user@m.gmane.org; Mon, 30 Jan 2012 20:03:22 +0100 Original-Received: from localhost ([::1]:50636 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RrwVd-0005xU-Ht for guile-user@m.gmane.org; Mon, 30 Jan 2012 14:03:21 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:48207) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RrwVW-0005xP-EW for guile-user@gnu.org; Mon, 30 Jan 2012 14:03:18 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RrwVS-0005zX-Gx for guile-user@gnu.org; Mon, 30 Jan 2012 14:03:14 -0500 Original-Received: from mail-pw0-f41.google.com ([209.85.160.41]:47705) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RrwVS-0005yU-CE for guile-user@gnu.org; Mon, 30 Jan 2012 14:03:10 -0500 Original-Received: by pbaa12 with SMTP id a12so4364742pba.0 for ; Mon, 30 Jan 2012 11:03:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=f5nodRy7wTWonR7eTvcfHh0FyoM+Vg7m8tfojKZ4y5M=; b=N3RyOxkBonxJymgzY2CONvQ/r1HxSZtKmPfnQjnwQZbuG55yYbVpOHizxKE8mBBerr XjdwalS2eCIMsDdCRC03KS2sdQ4c8VbPqtD0DX+fzKd76tRnDII463e8jiPK9xJTjtZK NWx4LHcpWxsnEFsNsl0sLO/rMxhD9YFeLJ+ZA= Original-Received: by 10.68.225.73 with SMTP id ri9mr5699381pbc.70.1327950189003; Mon, 30 Jan 2012 11:03:09 -0800 (PST) Original-Received: by 10.142.187.15 with HTTP; Mon, 30 Jan 2012 11:03:08 -0800 (PST) In-Reply-To: <87y5swcbt9.fsf@Kagami.home> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.85.160.41 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: guile-user-bounces+guile-user=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.user:9221 Archived-At: 2012/1/25 Ian Price : >>> It would be if someone(nudge nudge) were to take the effort to make one >>> of these experiments practical, since a guile web framework seems to be >>> a common request. >> >> While i like the idea i should note that it does not scale. What if you >> have 5 application servers (guile (import (web server)) running behind >> reverse proxy. User may never fire needed continuation. Overall scaling >> strategy for web is "avoid per node state" (see read-only filesystems on >> Heroku). > > Well, no-one suggested that the current approach is practical. It isn't. As long as you have some way to redirect the client back to the same application server things would scale quite well I think. You could embed some token identifying the application server in the URL which the reverse proxy could use to forward the request to the same application server instance. New user sessions would still be load-balanced using a round-robin scheme or something more sophisticated. Something even cooler would be to have serializable continuations like in Racket (but it requires limiting the language somewhat), in which case you could store the continuations in the URL (if they are not too big), or perhaps in some distributed hashtable that all application server instances could access. -Tobias