2012-07-01 6 views
10

Sono consapevole dei limiti di memoria della piattaforma Heroku e so che è molto più scalabile separare un'app in web e dinamiche di lavoro. Tuttavia, mi piacerebbe ancora eseguire attività asincrone insieme al processo Web a scopo di test. Le Dynos sono costose e vorrei prototipare sull'istanza gratuita fornita da Heroku.È possibile eseguire più processi su un dyno Heroku?

Ci sono problemi con lo spawn di un nuovo lavoro come processo o sottoprocesso nello stesso banco di prova di un processo web?

risposta

3

Sul nuovo stack Cedar, non ci sono problemi con la generazione di più processi. Ogni dyno è una macchina virtuale e non ha limitazioni particolari tranne che nella memoria e nell'uso della CPU (circa 512 MB di memoria, credo, e 1 core della CPU). Seguendo le più recenti istruzioni di installazione per alcuni stack come Python si otterrà una configurazione con più processi (web server) immediatamente.

Il software installato sui web dynos può variare a seconda del buildpack che si sta utilizzando; se i sottoprocessi necessitano di un software speciale, potrebbe essere necessario raggrupparli insieme alla propria applicazione o (meglio) eseguire il proprio buildpack.

A questo punto, in genere, vorrei ricordare che eseguire attività asincrone su dinamiche di lavoro anziché su web dynos, con un adeguato sistema di code di attività, è fortemente incoraggiato, ma sembra che tu lo sappia già. Tieni presente che gli account con un solo banco virtuale (in genere questo significa account "gratuiti") avranno quel banco di prova dopo circa un'ora di non ricezione di richieste Web e qualsiasi processo in background eseguito sul banco in quel momento il tempo sarà necessariamente ucciso. Gli account con più web dynos non sono soggetti a questa restrizione.

+0

La soluzione alternativa per il dyno di inattività è che uno dei processi Web blocca atomicamente un oggetto di database, quindi controlla se il worker è in esecuzione e, in caso contrario, avviarlo. – okw