asyncore ürününe aşina değilim ve birkaç girişten eğimli öğretici dışında çok sınırlı eşzamanlı programlama bilgisine sahip değilim.asyncore geri arama başlıkları başlatılıyor ... tamam mı?
Ben parçacığı En aşina ve tüm uygulamalarda kullanabilirsiniz. Bir uygulama, arayüzü olarak couchdb veritabanını kullanır. Bu, değişiklikleri ve güncellemeleri arayan db'nin uzunluğunu içerir. Couchdb için kullandığım modül couchdbkit'dur. Bu değişiklikleri izlemek ve bir geri çağırmaya göndermek için bir asyncore döngü kullanır. Benim işçi konuları başlatmak nerede
Yani, bu geri arama dan edilir anlamaya. Eşzamansız ve dişli programlamayı karıştırmak biraz ham görünüyor. Ben gerçekten couchdbkit'i severim, fakat programımdaki sorunları tanıtmamayı tercih ederim.
Yani, benim sorum, bir zaman uyumsuz geri çağırma gelen konuları yangın güvenli? İşte
... bazı koddef dispatch(change):
global jobs, db_url # jobs is my queue
db = Database(db_url)
work_order = db.get(change['id']) # change is an id to the document that changed.
# i need to get the actual document (workorder)
worker = Worker(work_order, db) # fire the thread
jobs.append(worker)
worker.start()
return
main()
.
.
.
consumer.wait(cb=dispatch, since=update_seq, timeout=10000) #wait constains the asyncloop.
Güncelleme:
daha bunun üzerinde baktıktan sonra couchdbkit uzmanları için ek bir sorum var. Potansiyel olarak veritabanını kullanarak yüzlerce konu olacak. Kod örneğimde gördüğünüz gibi, iş parçacığı başına bir couchdbkit.Database nesnesi başlatıyorum. Bunun israf olabileceğini düşünüyorum. Yani, iş parçacığı arasında küresel olarak kullanılacak tek bir veritabanı nesnesi için sorun değil mi?
Yea, iş emri başına yeni bir konu oluşturma fikridir. Her çalışan bir tüneli açacak ve uzak bir cihazda çeşitli bakım görevleri gerçekleştirecektir. Bir iş parçacığı havuzunu düşünmedim, ancak belki geri çağırmaların nasıl kullanıldığı göz önüne alındığında bu iyi bir fikir olabilir. Giriş için teşekkürler. – sbartell