开发者

Locking database while executing rake script

I have created a rake script to send e-mails to some users.

The rake开发者_开发知识库 script first needs to delete some old database records, and then proceed with the e-mails.

The trouble is that during the time that the script is running, some users may view/delete the data themselves. If the data is deleted by the script, then the views should be refreshed, in order to accommodate the new data.

The first obvious solution that I can think of is to never display the old data in the views , and so avoid the possibility that a record is deleted after it has already been deleted.

But I still think that I have a race condition possibility here, and I would like to know how could I lock the database while executing the script.

I am using Mysql as my database system.


I would approach this by setting up a rake task that calls a method on a model to delete the database records. I would then wrap the code to delete the old mails in a transaction. That will lock the database while deleting the emails and allow you to handle any exceptions thrown when anyone else tries to delete the data.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜