Burada açık uçlu bir soruyla ilgili bir sorun var, bu yüzden önce sorunu açıklayacağım. Veri eşzamanlama işlerini bir kuyruktan atması beklenen bir Resque çalışanımız var, nedenleri iki kat, Cron (ve Rails ortam önyükleme süresi üzerinden-ve ötesine ödeme yapıyor) berbat, ve alternatif kuyruklar, iyi Github yaptı Onlar announced Resque zaman onlara karşı oldukça iyi durumda. Ayrıca (, Redis zaman serisi işlevsellik zaten ... biz de RRDTool & vb içine TS verilerini karıştırmak bizim altyapı, büyük bir rol oynar İşte Çatal/dişli uygulama içinde çalışırken ActiveRecord yeniden bağlanamıyor mu?
işler arasında tipik bir üç saat, sorun ama Personel, herhangi bir zamanda işleri zamanlayabilirsiniz ... böylece sıra), PostgreSQL sunucusu uzağa gider. Tedavi etmek için yeterince kolay, ilgili ortamın altında
reconnect: true
ayarının beklediğim gibi çalışmasını beklerim.
few
places
reconnect: true
'un
fork()
kullanan uygulamalar için çalışmaz. Doğal olarak,
Resque'un, işçilere başlaması için bunu yapar… Anlamadığım kısım, ActiveRecord'un yeniden bağlanmasının neden bu koşullar altında çalışamayacağıdır?
Ben
MySQL Adapter ve ActiveRecord içinde
PostgreSQL Adapter farklıdır
reconnect!
uygulamalarını farkettim ... ama her iki durumda da ben ActiveRecord
reconnect: true
yapılandırma çalışması beklenir.
sorun (böylece veritabanına bağlantı asılı) yeterince çocuk süreç var olduğunda, bu ebeveyn tarafından oluşturulan kolları dosyayı kapatır net görünüyor - bu mümkündür, böyle bir bir dosya tanıtıcısından kapatmak için ActiveRecord bağlantının sonlandırıldığını algılama yolu? Ne olursa olsun için de var
, bir pastie olarak, Github bulabildim bir ActiveRecord aware fork() - bu denenmemiş, ama bunun işe yaradığını varsayalım (cari Raylar ile hiç denemedim ..)
Benim sorum daha, fork()
niçin AR yeniden otomatik olarak bağlanamıyorsunuz? (ve son olarak - Bu soruna sahip olan tek kişi ben olamıyorum; Resque ile PGSQL kullanarak tebeşirleniyorum!)
Roman, tabii - Geçici çözümüm var, ama özellikle yeniden bağlanmanın nedenini arıyorum: true çalışmıyor.Eşzamanlılık (activerecord'un "allowconcurrency" bayrağı) ile ilgili bir şey olup olmadığını merak ediyorum - ve ilk bağlantının hala bağlı olduğunu farkettim… ama gerçekten kaybettim. –
Eh, activerecord koduna bakarak, ne söyleyebilirim, PostgreSQL adaptörü için 'reconnect' seçeneği desteklenmiyor. – Roman
Roman, daha spesifik olabilir, belki de bir link olabilir - bulduğum bir yerde bir uygulama vardı… (Eminim) –