rq 0.1.7 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (723) hide show
  1. data/INSTALL +21 -0
  2. data/README +752 -190
  3. data/TODO +18 -11
  4. data/TUTORIAL +230 -0
  5. data/all/install.rb +127 -0
  6. data/all/install.sh +165 -0
  7. data/all/packages/INSTALL +5 -0
  8. data/all/packages/arrayfields-3.6.0.tgz +0 -0
  9. data/all/packages/lockfile-1.4.1.tgz +0 -0
  10. data/all/packages/posixlock-0.0.1.tgz +0 -0
  11. data/all/packages/ruby-1.8.6.tgz +0 -0
  12. data/all/packages/rubygems-0.9.2.tgz +0 -0
  13. data/all/packages/sqlite-2.8.15.tar.gz +0 -0
  14. data/all/packages/sqlite-ruby-1.3.1.tar.gz +0 -0
  15. data/bin/rq +830 -361
  16. data/bin/rq-3.0.0 +860 -0
  17. data/doc/classes/ARGV.html +134 -0
  18. data/doc/classes/ARGV.src/M000036.html +36 -0
  19. data/doc/classes/ARGV.src/M000037.html +25 -0
  20. data/doc/classes/OrderedHash.html +1043 -0
  21. data/doc/classes/OrderedHash.src/M000003.html +26 -0
  22. data/doc/classes/OrderedHash.src/M000004.html +31 -0
  23. data/doc/classes/OrderedHash.src/M000005.html +23 -0
  24. data/doc/classes/OrderedHash.src/M000006.html +23 -0
  25. data/doc/classes/OrderedHash.src/M000007.html +24 -0
  26. data/doc/classes/OrderedHash.src/M000009.html +24 -0
  27. data/doc/classes/OrderedHash.src/M000010.html +24 -0
  28. data/doc/classes/OrderedHash.src/M000011.html +24 -0
  29. data/doc/classes/OrderedHash.src/M000012.html +24 -0
  30. data/doc/classes/OrderedHash.src/M000013.html +24 -0
  31. data/doc/classes/OrderedHash.src/M000014.html +24 -0
  32. data/doc/classes/OrderedHash.src/M000016.html +26 -0
  33. data/doc/classes/OrderedHash.src/M000017.html +25 -0
  34. data/doc/classes/OrderedHash.src/M000018.html +23 -0
  35. data/doc/classes/OrderedHash.src/M000019.html +25 -0
  36. data/doc/classes/OrderedHash.src/M000020.html +23 -0
  37. data/doc/classes/OrderedHash.src/M000021.html +24 -0
  38. data/doc/classes/OrderedHash.src/M000022.html +24 -0
  39. data/doc/classes/OrderedHash.src/M000023.html +24 -0
  40. data/doc/classes/OrderedHash.src/M000024.html +29 -0
  41. data/doc/classes/OrderedHash.src/M000025.html +29 -0
  42. data/doc/classes/OrderedHash.src/M000026.html +24 -0
  43. data/doc/classes/OrderedHash.src/M000027.html +25 -0
  44. data/doc/classes/OrderedHash.src/M000028.html +23 -0
  45. data/doc/classes/OrderedHash.src/M000029.html +25 -0
  46. data/doc/classes/OrderedHash.src/M000030.html +24 -0
  47. data/doc/classes/OrderedHash.src/M000032.html +23 -0
  48. data/doc/classes/OrderedHash.src/M000033.html +25 -0
  49. data/doc/classes/OrderedHash.src/M000034.html +36 -0
  50. data/doc/classes/OrderedHash.src/M000035.html +23 -0
  51. data/doc/classes/RQ.html +647 -0
  52. data/doc/classes/RQ/Backer.html +240 -0
  53. data/doc/classes/RQ/Backer.src/M000121.html +31 -0
  54. data/doc/classes/RQ/ConfigFile.html +416 -0
  55. data/doc/classes/RQ/ConfigFile.src/M000100.html +34 -0
  56. data/doc/classes/RQ/ConfigFile.src/M000101.html +26 -0
  57. data/doc/classes/RQ/ConfigFile.src/M000102.html +33 -0
  58. data/doc/classes/RQ/ConfigFile.src/M000103.html +25 -0
  59. data/doc/classes/RQ/ConfigFile.src/M000104.html +34 -0
  60. data/doc/classes/RQ/ConfigFile.src/M000105.html +25 -0
  61. data/doc/classes/RQ/Configurator.html +249 -0
  62. data/doc/classes/RQ/Configurator.src/M000122.html +40 -0
  63. data/doc/classes/RQ/Creator.html +264 -0
  64. data/doc/classes/RQ/Creator.src/M000157.html +32 -0
  65. data/doc/classes/RQ/Cron.html +461 -0
  66. data/doc/classes/RQ/Deleter.html +259 -0
  67. data/doc/classes/RQ/Deleter.src/M000078.html +52 -0
  68. data/doc/classes/RQ/Executor.html +249 -0
  69. data/doc/classes/RQ/Executor.src/M000099.html +45 -0
  70. data/doc/classes/RQ/Feeder.html +1131 -0
  71. data/doc/classes/RQ/Feeder.src/M000079.html +67 -0
  72. data/doc/classes/RQ/Feeder.src/M000080.html +47 -0
  73. data/doc/classes/RQ/Feeder.src/M000081.html +98 -0
  74. data/doc/classes/RQ/Feeder.src/M000082.html +25 -0
  75. data/doc/classes/RQ/Feeder.src/M000083.html +30 -0
  76. data/doc/classes/RQ/Feeder.src/M000084.html +58 -0
  77. data/doc/classes/RQ/Feeder.src/M000085.html +37 -0
  78. data/doc/classes/RQ/Feeder.src/M000086.html +40 -0
  79. data/doc/classes/RQ/Feeder.src/M000087.html +37 -0
  80. data/doc/classes/RQ/Feeder.src/M000088.html +35 -0
  81. data/doc/classes/RQ/Feeder.src/M000089.html +47 -0
  82. data/doc/classes/RQ/Feeder.src/M000090.html +25 -0
  83. data/doc/classes/RQ/Feeder.src/M000091.html +78 -0
  84. data/doc/classes/RQ/Feeder.src/M000092.html +34 -0
  85. data/doc/classes/RQ/Feeder.src/M000093.html +36 -0
  86. data/doc/classes/RQ/Feeder.src/M000094.html +25 -0
  87. data/doc/classes/RQ/Feeder.src/M000095.html +27 -0
  88. data/doc/classes/RQ/IOViewer.html +256 -0
  89. data/doc/classes/RQ/Job.html +304 -0
  90. data/doc/classes/RQ/Job.src/M000168.html +26 -0
  91. data/doc/classes/RQ/Job.src/M000169.html +37 -0
  92. data/doc/classes/RQ/Job.src/M000170.html +23 -0
  93. data/doc/classes/RQ/Job/Methods.html +210 -0
  94. data/doc/classes/RQ/JobQueue.html +1780 -0
  95. data/doc/classes/RQ/JobQueue.src/M000176.html +31 -0
  96. data/doc/classes/RQ/JobQueue.src/M000177.html +34 -0
  97. data/doc/classes/RQ/JobQueue.src/M000178.html +60 -0
  98. data/doc/classes/RQ/JobQueue.src/M000179.html +63 -0
  99. data/doc/classes/RQ/JobQueue.src/M000180.html +73 -0
  100. data/doc/classes/RQ/JobQueue.src/M000181.html +217 -0
  101. data/doc/classes/RQ/JobQueue.src/M000182.html +50 -0
  102. data/doc/classes/RQ/JobQueue.src/M000183.html +83 -0
  103. data/doc/classes/RQ/JobQueue.src/M000184.html +25 -0
  104. data/doc/classes/RQ/JobQueue.src/M000185.html +83 -0
  105. data/doc/classes/RQ/JobQueue.src/M000186.html +28 -0
  106. data/doc/classes/RQ/JobQueue.src/M000187.html +26 -0
  107. data/doc/classes/RQ/JobQueue.src/M000188.html +26 -0
  108. data/doc/classes/RQ/JobQueue.src/M000189.html +32 -0
  109. data/doc/classes/RQ/JobQueue.src/M000190.html +30 -0
  110. data/doc/classes/RQ/JobQueue.src/M000191.html +37 -0
  111. data/doc/classes/RQ/JobQueue.src/M000192.html +36 -0
  112. data/doc/classes/RQ/JobQueue.src/M000193.html +25 -0
  113. data/doc/classes/RQ/JobQueue.src/M000194.html +25 -0
  114. data/doc/classes/RQ/JobQueue.src/M000195.html +25 -0
  115. data/doc/classes/RQ/JobQueue.src/M000196.html +25 -0
  116. data/doc/classes/RQ/JobQueue.src/M000197.html +25 -0
  117. data/doc/classes/RQ/JobQueue.src/M000198.html +73 -0
  118. data/doc/classes/RQ/JobQueue.src/M000199.html +25 -0
  119. data/doc/classes/RQ/JobQueue.src/M000200.html +38 -0
  120. data/doc/classes/RQ/JobQueue.src/M000201.html +28 -0
  121. data/doc/classes/RQ/JobQueue/Error.html +187 -0
  122. data/doc/classes/RQ/JobRunner.html +386 -0
  123. data/doc/classes/RQ/JobRunner.src/M000117.html +53 -0
  124. data/doc/classes/RQ/JobRunner.src/M000118.html +26 -0
  125. data/doc/classes/RQ/JobRunnerDaemon.html +590 -0
  126. data/doc/classes/RQ/JobRunnerDaemon.src/M000159.html +94 -0
  127. data/doc/classes/RQ/JobRunnerDaemon.src/M000160.html +27 -0
  128. data/doc/classes/RQ/JobRunnerDaemon.src/M000161.html +39 -0
  129. data/doc/classes/RQ/JobRunnerDaemon.src/M000162.html +27 -0
  130. data/doc/classes/RQ/JobRunnerDaemon.src/M000163.html +27 -0
  131. data/doc/classes/RQ/JobRunnerDaemon.src/M000164.html +28 -0
  132. data/doc/classes/RQ/JobRunnerDaemon.src/M000165.html +28 -0
  133. data/doc/classes/RQ/JobRunnerDaemon.src/M000166.html +37 -0
  134. data/doc/classes/RQ/JobRunnerDaemon.src/M000167.html +25 -0
  135. data/doc/classes/RQ/Lister.html +256 -0
  136. data/doc/classes/RQ/Lister.src/M000156.html +52 -0
  137. data/doc/classes/RQ/Locker.html +250 -0
  138. data/doc/classes/RQ/Locker.src/M000120.html +40 -0
  139. data/doc/classes/RQ/Logging.html +296 -0
  140. data/doc/classes/RQ/Logging.src/M000067.html +28 -0
  141. data/doc/classes/RQ/Logging/LogClassMethods.html +254 -0
  142. data/doc/classes/RQ/Logging/LogClassMethods.src/M000068.html +32 -0
  143. data/doc/classes/RQ/Logging/LogClassMethods.src/M000069.html +28 -0
  144. data/doc/classes/RQ/Logging/LogMethods.html +404 -0
  145. data/doc/classes/RQ/Logging/LogMethods.src/M000070.html +35 -0
  146. data/doc/classes/RQ/Logging/LogMethods.src/M000071.html +28 -0
  147. data/doc/classes/RQ/Logging/LogMethods.src/M000072.html +21 -0
  148. data/doc/classes/RQ/Logging/LogMethods.src/M000073.html +21 -0
  149. data/doc/classes/RQ/Logging/LogMethods.src/M000074.html +21 -0
  150. data/doc/classes/RQ/Logging/LogMethods.src/M000075.html +21 -0
  151. data/doc/classes/RQ/Logging/LogMethods.src/M000076.html +21 -0
  152. data/doc/classes/RQ/Logging/LogMethods.src/M000077.html +29 -0
  153. data/doc/classes/RQ/Logging/LoggerExt.html +194 -0
  154. data/doc/classes/RQ/Main.html +2110 -0
  155. data/doc/classes/RQ/MainHelper.html +607 -0
  156. data/doc/classes/RQ/MainHelper.src/M000171.html +33 -0
  157. data/doc/classes/RQ/MainHelper.src/M000172.html +32 -0
  158. data/doc/classes/RQ/MainHelper.src/M000173.html +44 -0
  159. data/doc/classes/RQ/OrderedAutoHash.html +258 -0
  160. data/doc/classes/RQ/OrderedAutoHash.src/M000205.html +25 -0
  161. data/doc/classes/RQ/OrderedAutoHash.src/M000206.html +25 -0
  162. data/doc/classes/RQ/QDB.html +1653 -0
  163. data/doc/classes/RQ/QDB.src/M000126.html +25 -0
  164. data/doc/classes/RQ/QDB.src/M000127.html +37 -0
  165. data/doc/classes/RQ/QDB.src/M000128.html +27 -0
  166. data/doc/classes/RQ/QDB.src/M000129.html +27 -0
  167. data/doc/classes/RQ/QDB.src/M000130.html +27 -0
  168. data/doc/classes/RQ/QDB.src/M000131.html +31 -0
  169. data/doc/classes/RQ/QDB.src/M000132.html +32 -0
  170. data/doc/classes/RQ/QDB.src/M000133.html +30 -0
  171. data/doc/classes/RQ/QDB.src/M000134.html +91 -0
  172. data/doc/classes/RQ/QDB.src/M000135.html +26 -0
  173. data/doc/classes/RQ/QDB.src/M000136.html +46 -0
  174. data/doc/classes/RQ/QDB.src/M000137.html +26 -0
  175. data/doc/classes/RQ/QDB.src/M000138.html +51 -0
  176. data/doc/classes/RQ/QDB.src/M000139.html +61 -0
  177. data/doc/classes/RQ/QDB.src/M000140.html +57 -0
  178. data/doc/classes/RQ/QDB.src/M000141.html +25 -0
  179. data/doc/classes/RQ/QDB.src/M000142.html +25 -0
  180. data/doc/classes/RQ/QDB.src/M000143.html +37 -0
  181. data/doc/classes/RQ/QDB.src/M000144.html +107 -0
  182. data/doc/classes/RQ/QDB.src/M000145.html +40 -0
  183. data/doc/classes/RQ/QDB.src/M000146.html +34 -0
  184. data/doc/classes/RQ/QDB.src/M000147.html +33 -0
  185. data/doc/classes/RQ/QDB.src/M000148.html +32 -0
  186. data/doc/classes/RQ/QDB.src/M000149.html +98 -0
  187. data/doc/classes/RQ/QDB.src/M000150.html +26 -0
  188. data/doc/classes/RQ/QDB.src/M000151.html +31 -0
  189. data/doc/classes/RQ/QDB.src/M000154.html +26 -0
  190. data/doc/classes/RQ/QDB/AbortedTransactionError.html +187 -0
  191. data/doc/classes/RQ/QDB/RollbackTransactionError.html +187 -0
  192. data/doc/classes/RQ/Querier.html +328 -0
  193. data/doc/classes/RQ/Querier.src/M000203.html +45 -0
  194. data/doc/classes/RQ/Querier.src/M000204.html +78 -0
  195. data/doc/classes/RQ/ReSubmitter.html +307 -0
  196. data/doc/classes/RQ/ReSubmitter.src/M000098.html +111 -0
  197. data/doc/classes/RQ/Recoverer.html +247 -0
  198. data/doc/classes/RQ/Refresher.html +346 -0
  199. data/doc/classes/RQ/Refresher.src/M000174.html +51 -0
  200. data/doc/classes/RQ/Refresher.src/M000175.html +44 -0
  201. data/doc/classes/RQ/Relayer.html +723 -0
  202. data/doc/classes/RQ/Relayer.src/M000106.html +91 -0
  203. data/doc/classes/RQ/Relayer.src/M000107.html +47 -0
  204. data/doc/classes/RQ/Relayer.src/M000108.html +46 -0
  205. data/doc/classes/RQ/Relayer.src/M000109.html +26 -0
  206. data/doc/classes/RQ/Relayer.src/M000110.html +46 -0
  207. data/doc/classes/RQ/Relayer.src/M000111.html +40 -0
  208. data/doc/classes/RQ/Relayer.src/M000112.html +37 -0
  209. data/doc/classes/RQ/Relayer.src/M000113.html +40 -0
  210. data/doc/classes/RQ/Relayer.src/M000114.html +27 -0
  211. data/doc/classes/RQ/Relayer.src/M000115.html +25 -0
  212. data/doc/classes/RQ/Relayer.src/M000116.html +38 -0
  213. data/doc/classes/RQ/Resource.html +187 -0
  214. data/doc/classes/RQ/ResourceManager.html +276 -0
  215. data/doc/classes/RQ/Rotater.html +324 -0
  216. data/doc/classes/RQ/Rotater.src/M000158.html +71 -0
  217. data/doc/classes/RQ/SleepCycle.html +322 -0
  218. data/doc/classes/RQ/SleepCycle.src/M000123.html +32 -0
  219. data/doc/classes/RQ/SleepCycle.src/M000124.html +27 -0
  220. data/doc/classes/RQ/SleepCycle.src/M000125.html +25 -0
  221. data/doc/classes/RQ/Snapshotter.html +250 -0
  222. data/doc/classes/RQ/Snapshotter.src/M000097.html +35 -0
  223. data/doc/classes/RQ/StatusLister.html +289 -0
  224. data/doc/classes/RQ/StatusLister.src/M000096.html +26 -0
  225. data/doc/classes/RQ/Submitter.html +319 -0
  226. data/doc/classes/RQ/Submitter.src/M000119.html +92 -0
  227. data/doc/classes/RQ/Toucher.html +384 -0
  228. data/doc/classes/RQ/Updater.html +304 -0
  229. data/doc/classes/RQ/Updater.src/M000202.html +97 -0
  230. data/doc/classes/RQ/Usage.html +346 -0
  231. data/doc/classes/RQ/Usage.src/M000038.html +29 -0
  232. data/doc/classes/RQ/Usage.src/M000039.html +72 -0
  233. data/doc/classes/RQ/Util.html +1043 -0
  234. data/doc/classes/RQ/Util.src/M000040.html +27 -0
  235. data/doc/classes/RQ/Util.src/M000041.html +26 -0
  236. data/doc/classes/RQ/Util.src/M000042.html +25 -0
  237. data/doc/classes/RQ/Util.src/M000043.html +25 -0
  238. data/doc/classes/RQ/Util.src/M000044.html +30 -0
  239. data/doc/classes/RQ/Util.src/M000045.html +25 -0
  240. data/doc/classes/RQ/Util.src/M000046.html +34 -0
  241. data/doc/classes/RQ/Util.src/M000047.html +31 -0
  242. data/doc/classes/RQ/Util.src/M000048.html +41 -0
  243. data/doc/classes/RQ/Util.src/M000049.html +27 -0
  244. data/doc/classes/RQ/Util.src/M000050.html +34 -0
  245. data/doc/classes/RQ/Util.src/M000051.html +28 -0
  246. data/doc/classes/RQ/Util.src/M000052.html +27 -0
  247. data/doc/classes/RQ/Util.src/M000053.html +31 -0
  248. data/doc/classes/RQ/Util.src/M000054.html +31 -0
  249. data/doc/classes/RQ/Util.src/M000055.html +31 -0
  250. data/doc/classes/RQ/Util.src/M000056.html +25 -0
  251. data/doc/classes/RQ/Util.src/M000057.html +25 -0
  252. data/doc/classes/RQ/Util.src/M000058.html +25 -0
  253. data/doc/classes/RQ/Util.src/M000059.html +25 -0
  254. data/doc/classes/RQ/Util.src/M000060.html +25 -0
  255. data/doc/classes/RQ/Util.src/M000061.html +27 -0
  256. data/doc/classes/RQ/Util.src/M000062.html +28 -0
  257. data/doc/classes/RQ/Util.src/M000063.html +39 -0
  258. data/doc/classes/RQ/Util.src/M000064.html +39 -0
  259. data/doc/classes/RQ/Util.src/M000065.html +31 -0
  260. data/doc/classes/RQ/Util.src/M000066.html +29 -0
  261. data/doc/classes/SQLite.html +120 -0
  262. data/doc/classes/SQLite/Database.html +546 -0
  263. data/doc/classes/SQLite/TypeTranslator.html +221 -0
  264. data/doc/created.rid +1 -0
  265. data/doc/dot/f_0.dot +14 -0
  266. data/doc/dot/f_0.jpg +0 -0
  267. data/doc/dot/f_1.dot +14 -0
  268. data/doc/dot/f_1.jpg +0 -0
  269. data/doc/dot/f_10.dot +802 -0
  270. data/doc/dot/f_10.jpg +0 -0
  271. data/doc/dot/f_11.dot +14 -0
  272. data/doc/dot/f_11.jpg +0 -0
  273. data/doc/dot/f_12.dot +802 -0
  274. data/doc/dot/f_12.jpg +0 -0
  275. data/doc/dot/f_13.dot +802 -0
  276. data/doc/dot/f_13.jpg +0 -0
  277. data/doc/dot/f_14.dot +802 -0
  278. data/doc/dot/f_14.jpg +0 -0
  279. data/doc/dot/f_15.dot +802 -0
  280. data/doc/dot/f_15.jpg +0 -0
  281. data/doc/dot/f_16.dot +802 -0
  282. data/doc/dot/f_16.jpg +0 -0
  283. data/doc/dot/f_17.dot +802 -0
  284. data/doc/dot/f_17.jpg +0 -0
  285. data/doc/dot/f_18.dot +14 -0
  286. data/doc/dot/f_18.jpg +0 -0
  287. data/doc/dot/f_19.dot +802 -0
  288. data/doc/dot/f_19.jpg +0 -0
  289. data/doc/dot/f_2.dot +14 -0
  290. data/doc/dot/f_2.jpg +0 -0
  291. data/doc/dot/f_20.dot +802 -0
  292. data/doc/dot/f_20.jpg +0 -0
  293. data/doc/dot/f_21.dot +802 -0
  294. data/doc/dot/f_21.jpg +0 -0
  295. data/doc/dot/f_22.dot +802 -0
  296. data/doc/dot/f_22.jpg +0 -0
  297. data/doc/dot/f_23.dot +802 -0
  298. data/doc/dot/f_23.jpg +0 -0
  299. data/doc/dot/f_24.dot +802 -0
  300. data/doc/dot/f_24.jpg +0 -0
  301. data/doc/dot/f_25.dot +817 -0
  302. data/doc/dot/f_25.jpg +0 -0
  303. data/doc/dot/f_26.dot +29 -0
  304. data/doc/dot/f_26.jpg +0 -0
  305. data/doc/dot/f_27.dot +802 -0
  306. data/doc/dot/f_27.jpg +0 -0
  307. data/doc/dot/f_28.dot +802 -0
  308. data/doc/dot/f_28.jpg +0 -0
  309. data/doc/dot/f_29.dot +802 -0
  310. data/doc/dot/f_29.jpg +0 -0
  311. data/doc/dot/f_3.dot +14 -0
  312. data/doc/dot/f_3.jpg +0 -0
  313. data/doc/dot/f_30.dot +802 -0
  314. data/doc/dot/f_30.jpg +0 -0
  315. data/doc/dot/f_31.dot +802 -0
  316. data/doc/dot/f_31.jpg +0 -0
  317. data/doc/dot/f_32.dot +802 -0
  318. data/doc/dot/f_32.jpg +0 -0
  319. data/doc/dot/f_33.dot +802 -0
  320. data/doc/dot/f_33.jpg +0 -0
  321. data/doc/dot/f_34.dot +802 -0
  322. data/doc/dot/f_34.jpg +0 -0
  323. data/doc/dot/f_35.dot +802 -0
  324. data/doc/dot/f_35.jpg +0 -0
  325. data/doc/dot/f_36.dot +802 -0
  326. data/doc/dot/f_36.jpg +0 -0
  327. data/doc/dot/f_37.dot +802 -0
  328. data/doc/dot/f_37.jpg +0 -0
  329. data/doc/dot/f_38.dot +54 -0
  330. data/doc/dot/f_38.jpg +0 -0
  331. data/doc/dot/f_39.dot +802 -0
  332. data/doc/dot/f_39.jpg +0 -0
  333. data/doc/dot/f_4.dot +802 -0
  334. data/doc/dot/f_4.jpg +0 -0
  335. data/doc/dot/f_40.dot +802 -0
  336. data/doc/dot/f_40.jpg +0 -0
  337. data/doc/dot/f_41.dot +802 -0
  338. data/doc/dot/f_41.jpg +0 -0
  339. data/doc/dot/f_42.dot +802 -0
  340. data/doc/dot/f_42.jpg +0 -0
  341. data/doc/dot/f_43.dot +802 -0
  342. data/doc/dot/f_43.jpg +0 -0
  343. data/doc/dot/f_44.dot +802 -0
  344. data/doc/dot/f_44.jpg +0 -0
  345. data/doc/dot/f_5.dot +802 -0
  346. data/doc/dot/f_5.jpg +0 -0
  347. data/doc/dot/f_6.dot +802 -0
  348. data/doc/dot/f_6.jpg +0 -0
  349. data/doc/dot/f_7.dot +802 -0
  350. data/doc/dot/f_7.jpg +0 -0
  351. data/doc/dot/f_8.dot +802 -0
  352. data/doc/dot/f_8.jpg +0 -0
  353. data/doc/dot/f_9.dot +802 -0
  354. data/doc/dot/f_9.jpg +0 -0
  355. data/doc/dot/m_10_0.dot +802 -0
  356. data/doc/dot/m_10_0.jpg +0 -0
  357. data/doc/dot/m_11_0.dot +734 -0
  358. data/doc/dot/m_11_0.jpg +0 -0
  359. data/doc/dot/m_12_0.dot +802 -0
  360. data/doc/dot/m_12_0.jpg +0 -0
  361. data/doc/dot/m_13_0.dot +802 -0
  362. data/doc/dot/m_13_0.jpg +0 -0
  363. data/doc/dot/m_14_0.dot +802 -0
  364. data/doc/dot/m_14_0.jpg +0 -0
  365. data/doc/dot/m_15_0.dot +802 -0
  366. data/doc/dot/m_15_0.jpg +0 -0
  367. data/doc/dot/m_16_0.dot +802 -0
  368. data/doc/dot/m_16_0.jpg +0 -0
  369. data/doc/dot/m_17_0.dot +802 -0
  370. data/doc/dot/m_17_0.jpg +0 -0
  371. data/doc/dot/m_18_0.dot +734 -0
  372. data/doc/dot/m_18_0.jpg +0 -0
  373. data/doc/dot/m_19_0.dot +802 -0
  374. data/doc/dot/m_19_0.jpg +0 -0
  375. data/doc/dot/m_20_0.dot +802 -0
  376. data/doc/dot/m_20_0.jpg +0 -0
  377. data/doc/dot/m_21_0.dot +802 -0
  378. data/doc/dot/m_21_0.jpg +0 -0
  379. data/doc/dot/m_22_0.dot +802 -0
  380. data/doc/dot/m_22_0.jpg +0 -0
  381. data/doc/dot/m_23_0.dot +802 -0
  382. data/doc/dot/m_23_0.jpg +0 -0
  383. data/doc/dot/m_24_0.dot +802 -0
  384. data/doc/dot/m_24_0.jpg +0 -0
  385. data/doc/dot/m_25_0.dot +802 -0
  386. data/doc/dot/m_25_0.jpg +0 -0
  387. data/doc/dot/m_26_0.dot +734 -0
  388. data/doc/dot/m_26_0.jpg +0 -0
  389. data/doc/dot/m_27_0.dot +802 -0
  390. data/doc/dot/m_27_0.jpg +0 -0
  391. data/doc/dot/m_28_0.dot +802 -0
  392. data/doc/dot/m_28_0.jpg +0 -0
  393. data/doc/dot/m_29_0.dot +802 -0
  394. data/doc/dot/m_29_0.jpg +0 -0
  395. data/doc/dot/m_30_0.dot +802 -0
  396. data/doc/dot/m_30_0.jpg +0 -0
  397. data/doc/dot/m_31_0.dot +802 -0
  398. data/doc/dot/m_31_0.jpg +0 -0
  399. data/doc/dot/m_32_0.dot +802 -0
  400. data/doc/dot/m_32_0.jpg +0 -0
  401. data/doc/dot/m_33_0.dot +802 -0
  402. data/doc/dot/m_33_0.jpg +0 -0
  403. data/doc/dot/m_34_0.dot +802 -0
  404. data/doc/dot/m_34_0.jpg +0 -0
  405. data/doc/dot/m_35_0.dot +802 -0
  406. data/doc/dot/m_35_0.jpg +0 -0
  407. data/doc/dot/m_36_0.dot +802 -0
  408. data/doc/dot/m_36_0.jpg +0 -0
  409. data/doc/dot/m_37_0.dot +802 -0
  410. data/doc/dot/m_37_0.jpg +0 -0
  411. data/doc/dot/m_38_0.dot +54 -0
  412. data/doc/dot/m_38_0.jpg +0 -0
  413. data/doc/dot/m_39_0.dot +802 -0
  414. data/doc/dot/m_39_0.jpg +0 -0
  415. data/doc/dot/m_40_0.dot +802 -0
  416. data/doc/dot/m_40_0.jpg +0 -0
  417. data/doc/dot/m_41_0.dot +802 -0
  418. data/doc/dot/m_41_0.jpg +0 -0
  419. data/doc/dot/m_42_0.dot +802 -0
  420. data/doc/dot/m_42_0.jpg +0 -0
  421. data/doc/dot/m_43_0.dot +802 -0
  422. data/doc/dot/m_43_0.jpg +0 -0
  423. data/doc/dot/m_44_0.dot +802 -0
  424. data/doc/dot/m_44_0.jpg +0 -0
  425. data/doc/dot/m_4_0.dot +802 -0
  426. data/doc/dot/m_4_0.jpg +0 -0
  427. data/doc/dot/m_5_0.dot +802 -0
  428. data/doc/dot/m_5_0.jpg +0 -0
  429. data/doc/dot/m_6_0.dot +802 -0
  430. data/doc/dot/m_6_0.jpg +0 -0
  431. data/doc/dot/m_7_0.dot +802 -0
  432. data/doc/dot/m_7_0.jpg +0 -0
  433. data/doc/dot/m_8_0.dot +802 -0
  434. data/doc/dot/m_8_0.jpg +0 -0
  435. data/doc/dot/m_9_0.dot +802 -0
  436. data/doc/dot/m_9_0.jpg +0 -0
  437. data/doc/files/DEPENDS.html +107 -0
  438. data/doc/files/HISTORY.html +316 -0
  439. data/doc/files/INSTALL.html +126 -0
  440. data/doc/files/README.html +1223 -0
  441. data/doc/files/TODO.html +148 -0
  442. data/doc/files/TUTORIAL.html +392 -0
  443. data/doc/files/VERSION.html +107 -0
  444. data/doc/files/bin/rq_rb.html +231 -0
  445. data/doc/files/install_rb.html +188 -0
  446. data/doc/files/install_rb.src/M000001.html +53 -0
  447. data/doc/files/install_rb.src/M000002.html +43 -0
  448. data/doc/files/lib/rq-1_0_0/backer_rb.html +174 -0
  449. data/doc/files/lib/rq-1_0_0/configfile_rb.html +174 -0
  450. data/doc/files/lib/rq-1_0_0/configurator_rb.html +174 -0
  451. data/doc/files/lib/rq-1_0_0/creator_rb.html +174 -0
  452. data/doc/files/lib/rq-1_0_0/defaultconfig_txt.html +110 -0
  453. data/doc/files/lib/rq-1_0_0/deleter_rb.html +174 -0
  454. data/doc/files/lib/rq-1_0_0/executor_rb.html +174 -0
  455. data/doc/files/lib/rq-1_0_0/feeder_rb.html +178 -0
  456. data/doc/files/lib/rq-1_0_0/job_rb.html +176 -0
  457. data/doc/files/lib/rq-1_0_0/jobqueue_rb.html +177 -0
  458. data/doc/files/lib/rq-1_0_0/jobrunner_rb.html +175 -0
  459. data/doc/files/lib/rq-1_0_0/jobrunnerdaemon_rb.html +179 -0
  460. data/doc/files/lib/rq-1_0_0/lister_rb.html +174 -0
  461. data/doc/files/lib/rq-1_0_0/locker_rb.html +175 -0
  462. data/doc/files/lib/rq-1_0_0/logging_rb.html +178 -0
  463. data/doc/files/lib/rq-1_0_0/mainhelper_rb.html +175 -0
  464. data/doc/files/lib/rq-1_0_0/qdb_rb.html +177 -0
  465. data/doc/files/lib/rq-1_0_0/querier_rb.html +174 -0
  466. data/doc/files/lib/rq-1_0_0/refresher_rb.html +167 -0
  467. data/doc/files/lib/rq-1_0_0/relayer_rb.html +178 -0
  468. data/doc/files/lib/rq-1_0_0/sleepcycle_rb.html +167 -0
  469. data/doc/files/lib/rq-1_0_0/snapshotter_rb.html +174 -0
  470. data/doc/files/lib/rq-1_0_0/statuslister_rb.html +174 -0
  471. data/doc/files/lib/rq-1_0_0/submitter_rb.html +174 -0
  472. data/doc/files/lib/rq-1_0_0/updater_rb.html +174 -0
  473. data/doc/files/lib/rq-1_0_0/usage_rb.html +174 -0
  474. data/doc/files/lib/rq-1_0_0/util_rb.html +176 -0
  475. data/doc/files/lib/rq-2_0_0/backer_rb.html +180 -0
  476. data/doc/files/lib/rq-2_0_0/configfile_rb.html +180 -0
  477. data/doc/files/lib/rq-2_0_0/configurator_rb.html +180 -0
  478. data/doc/files/lib/rq-2_0_0/creator_rb.html +180 -0
  479. data/doc/files/lib/rq-2_0_0/defaultconfig_txt.html +110 -0
  480. data/doc/files/lib/rq-2_0_0/deleter_rb.html +180 -0
  481. data/doc/files/lib/rq-2_0_0/executor_rb.html +180 -0
  482. data/doc/files/lib/rq-2_0_0/feeder_rb.html +184 -0
  483. data/doc/files/lib/rq-2_0_0/job_rb.html +182 -0
  484. data/doc/files/lib/rq-2_0_0/jobqueue_rb.html +185 -0
  485. data/doc/files/lib/rq-2_0_0/jobrunner_rb.html +181 -0
  486. data/doc/files/lib/rq-2_0_0/jobrunnerdaemon_rb.html +185 -0
  487. data/doc/files/lib/rq-2_0_0/lister_rb.html +180 -0
  488. data/doc/files/lib/rq-2_0_0/locker_rb.html +181 -0
  489. data/doc/files/lib/rq-2_0_0/logging_rb.html +184 -0
  490. data/doc/files/lib/rq-2_0_0/mainhelper_rb.html +181 -0
  491. data/doc/files/lib/rq-2_0_0/orderedautohash_rb.html +182 -0
  492. data/doc/files/lib/rq-2_0_0/orderedhash_rb.html +138 -0
  493. data/doc/files/lib/rq-2_0_0/qdb_rb.html +184 -0
  494. data/doc/files/lib/rq-2_0_0/querier_rb.html +180 -0
  495. data/doc/files/lib/rq-2_0_0/refresher_rb.html +173 -0
  496. data/doc/files/lib/rq-2_0_0/relayer_rb.html +184 -0
  497. data/doc/files/lib/rq-2_0_0/rotater_rb.html +180 -0
  498. data/doc/files/lib/rq-2_0_0/sleepcycle_rb.html +173 -0
  499. data/doc/files/lib/rq-2_0_0/snapshotter_rb.html +180 -0
  500. data/doc/files/lib/rq-2_0_0/statuslister_rb.html +180 -0
  501. data/doc/files/lib/rq-2_0_0/submitter_rb.html +181 -0
  502. data/doc/files/lib/rq-2_0_0/updater_rb.html +180 -0
  503. data/doc/files/lib/rq-2_0_0/usage_rb.html +180 -0
  504. data/doc/files/lib/rq-2_0_0/util_rb.html +182 -0
  505. data/doc/files/lib/rq-2_3_1/backer_rb.html +182 -0
  506. data/doc/files/lib/rq-2_3_1/configfile_rb.html +182 -0
  507. data/doc/files/lib/rq-2_3_1/configurator_rb.html +182 -0
  508. data/doc/files/lib/rq-2_3_1/creator_rb.html +182 -0
  509. data/doc/files/lib/rq-2_3_1/defaultconfig_txt.html +110 -0
  510. data/doc/files/lib/rq-2_3_1/deleter_rb.html +182 -0
  511. data/doc/files/lib/rq-2_3_1/executor_rb.html +182 -0
  512. data/doc/files/lib/rq-2_3_1/feeder_rb.html +187 -0
  513. data/doc/files/lib/rq-2_3_1/job_rb.html +185 -0
  514. data/doc/files/lib/rq-2_3_1/jobqueue_rb.html +187 -0
  515. data/doc/files/lib/rq-2_3_1/jobrunner_rb.html +184 -0
  516. data/doc/files/lib/rq-2_3_1/jobrunnerdaemon_rb.html +187 -0
  517. data/doc/files/lib/rq-2_3_1/lister_rb.html +182 -0
  518. data/doc/files/lib/rq-2_3_1/locker_rb.html +183 -0
  519. data/doc/files/lib/rq-2_3_1/logging_rb.html +186 -0
  520. data/doc/files/lib/rq-2_3_1/mainhelper_rb.html +183 -0
  521. data/doc/files/lib/rq-2_3_1/orderedautohash_rb.html +184 -0
  522. data/doc/files/lib/rq-2_3_1/orderedhash_rb.html +138 -0
  523. data/doc/files/lib/rq-2_3_1/qdb_rb.html +188 -0
  524. data/doc/files/lib/rq-2_3_1/querier_rb.html +182 -0
  525. data/doc/files/lib/rq-2_3_1/refresher_rb.html +175 -0
  526. data/doc/files/lib/rq-2_3_1/relayer_rb.html +186 -0
  527. data/doc/files/lib/rq-2_3_1/resubmitter_rb.html +183 -0
  528. data/doc/files/lib/rq-2_3_1/rotater_rb.html +182 -0
  529. data/doc/files/lib/rq-2_3_1/sleepcycle_rb.html +175 -0
  530. data/doc/files/lib/rq-2_3_1/snapshotter_rb.html +182 -0
  531. data/doc/files/lib/rq-2_3_1/statuslister_rb.html +182 -0
  532. data/doc/files/lib/rq-2_3_1/submitter_rb.html +183 -0
  533. data/doc/files/lib/rq-2_3_1/updater_rb.html +182 -0
  534. data/doc/files/lib/rq-2_3_1/usage_rb.html +182 -0
  535. data/doc/files/lib/rq-2_3_1/util_rb.html +184 -0
  536. data/doc/files/lib/rq-2_3_1_rb.html +153 -0
  537. data/doc/files/lib/rq-2_3_2/backer_rb.html +186 -0
  538. data/doc/files/lib/rq-2_3_2/configfile_rb.html +186 -0
  539. data/doc/files/lib/rq-2_3_2/configurator_rb.html +186 -0
  540. data/doc/files/lib/rq-2_3_2/creator_rb.html +186 -0
  541. data/doc/files/lib/rq-2_3_2/defaultconfig_txt.html +110 -0
  542. data/doc/files/lib/rq-2_3_2/deleter_rb.html +186 -0
  543. data/doc/files/lib/rq-2_3_2/executor_rb.html +186 -0
  544. data/doc/files/lib/rq-2_3_2/feeder_rb.html +191 -0
  545. data/doc/files/lib/rq-2_3_2/ioviewer_rb.html +186 -0
  546. data/doc/files/lib/rq-2_3_2/job_rb.html +189 -0
  547. data/doc/files/lib/rq-2_3_2/jobqueue_rb.html +192 -0
  548. data/doc/files/lib/rq-2_3_2/jobrunner_rb.html +188 -0
  549. data/doc/files/lib/rq-2_3_2/jobrunnerdaemon_rb.html +191 -0
  550. data/doc/files/lib/rq-2_3_2/lister_rb.html +186 -0
  551. data/doc/files/lib/rq-2_3_2/locker_rb.html +187 -0
  552. data/doc/files/lib/rq-2_3_2/logging_rb.html +190 -0
  553. data/doc/files/lib/rq-2_3_2/mainhelper_rb.html +188 -0
  554. data/doc/files/lib/rq-2_3_2/orderedautohash_rb.html +188 -0
  555. data/doc/files/lib/rq-2_3_2/orderedhash_rb.html +138 -0
  556. data/doc/files/lib/rq-2_3_2/qdb_rb.html +193 -0
  557. data/doc/files/lib/rq-2_3_2/querier_rb.html +186 -0
  558. data/doc/files/lib/rq-2_3_2/recoverer_rb.html +186 -0
  559. data/doc/files/lib/rq-2_3_2/refresher_rb.html +179 -0
  560. data/doc/files/lib/rq-2_3_2/relayer_rb.html +190 -0
  561. data/doc/files/lib/rq-2_3_2/resubmitter_rb.html +187 -0
  562. data/doc/files/lib/rq-2_3_2/rotater_rb.html +186 -0
  563. data/doc/files/lib/rq-2_3_2/sleepcycle_rb.html +179 -0
  564. data/doc/files/lib/rq-2_3_2/snapshotter_rb.html +186 -0
  565. data/doc/files/lib/rq-2_3_2/statuslister_rb.html +186 -0
  566. data/doc/files/lib/rq-2_3_2/submitter_rb.html +187 -0
  567. data/doc/files/lib/rq-2_3_2/updater_rb.html +186 -0
  568. data/doc/files/lib/rq-2_3_2/usage_rb.html +186 -0
  569. data/doc/files/lib/rq-2_3_2/util_rb.html +188 -0
  570. data/doc/files/lib/rq-2_3_3/backer_rb.html +186 -0
  571. data/doc/files/lib/rq-2_3_3/configfile_rb.html +186 -0
  572. data/doc/files/lib/rq-2_3_3/configurator_rb.html +186 -0
  573. data/doc/files/lib/rq-2_3_3/creator_rb.html +186 -0
  574. data/doc/files/lib/rq-2_3_3/defaultconfig_txt.html +110 -0
  575. data/doc/files/lib/rq-2_3_3/deleter_rb.html +186 -0
  576. data/doc/files/lib/rq-2_3_3/executor_rb.html +186 -0
  577. data/doc/files/lib/rq-2_3_3/feeder_rb.html +191 -0
  578. data/doc/files/lib/rq-2_3_3/ioviewer_rb.html +186 -0
  579. data/doc/files/lib/rq-2_3_3/job_rb.html +189 -0
  580. data/doc/files/lib/rq-2_3_3/jobqueue_rb.html +192 -0
  581. data/doc/files/lib/rq-2_3_3/jobrunner_rb.html +188 -0
  582. data/doc/files/lib/rq-2_3_3/jobrunnerdaemon_rb.html +191 -0
  583. data/doc/files/lib/rq-2_3_3/lister_rb.html +186 -0
  584. data/doc/files/lib/rq-2_3_3/locker_rb.html +187 -0
  585. data/doc/files/lib/rq-2_3_3/logging_rb.html +190 -0
  586. data/doc/files/lib/rq-2_3_3/mainhelper_rb.html +188 -0
  587. data/doc/files/lib/rq-2_3_3/orderedautohash_rb.html +188 -0
  588. data/doc/files/lib/rq-2_3_3/orderedhash_rb.html +138 -0
  589. data/doc/files/lib/rq-2_3_3/qdb_rb.html +193 -0
  590. data/doc/files/lib/rq-2_3_3/querier_rb.html +186 -0
  591. data/doc/files/lib/rq-2_3_3/recoverer_rb.html +186 -0
  592. data/doc/files/lib/rq-2_3_3/refresher_rb.html +179 -0
  593. data/doc/files/lib/rq-2_3_3/relayer_rb.html +190 -0
  594. data/doc/files/lib/rq-2_3_3/resubmitter_rb.html +187 -0
  595. data/doc/files/lib/rq-2_3_3/rotater_rb.html +187 -0
  596. data/doc/files/lib/rq-2_3_3/sleepcycle_rb.html +179 -0
  597. data/doc/files/lib/rq-2_3_3/snapshotter_rb.html +186 -0
  598. data/doc/files/lib/rq-2_3_3/statuslister_rb.html +186 -0
  599. data/doc/files/lib/rq-2_3_3/submitter_rb.html +187 -0
  600. data/doc/files/lib/rq-2_3_3/updater_rb.html +186 -0
  601. data/doc/files/lib/rq-2_3_3/usage_rb.html +186 -0
  602. data/doc/files/lib/rq-2_3_3/util_rb.html +188 -0
  603. data/doc/files/lib/rq-3_0_0/backer_rb.html +194 -0
  604. data/doc/files/lib/rq-3_0_0/configfile_rb.html +194 -0
  605. data/doc/files/lib/rq-3_0_0/configurator_rb.html +194 -0
  606. data/doc/files/lib/rq-3_0_0/creator_rb.html +194 -0
  607. data/doc/files/lib/rq-3_0_0/cron_rb.html +194 -0
  608. data/doc/files/lib/rq-3_0_0/defaultconfig_txt.html +110 -0
  609. data/doc/files/lib/rq-3_0_0/deleter_rb.html +194 -0
  610. data/doc/files/lib/rq-3_0_0/executor_rb.html +194 -0
  611. data/doc/files/lib/rq-3_0_0/feeder_rb.html +199 -0
  612. data/doc/files/lib/rq-3_0_0/ioviewer_rb.html +194 -0
  613. data/doc/files/lib/rq-3_0_0/job_rb.html +197 -0
  614. data/doc/files/lib/rq-3_0_0/jobqueue_rb.html +200 -0
  615. data/doc/files/lib/rq-3_0_0/jobrunner_rb.html +196 -0
  616. data/doc/files/lib/rq-3_0_0/jobrunnerdaemon_rb.html +199 -0
  617. data/doc/files/lib/rq-3_0_0/lister_rb.html +194 -0
  618. data/doc/files/lib/rq-3_0_0/locker_rb.html +195 -0
  619. data/doc/files/lib/rq-3_0_0/logging_rb.html +198 -0
  620. data/doc/files/lib/rq-3_0_0/mainhelper_rb.html +196 -0
  621. data/doc/files/lib/rq-3_0_0/orderedautohash_rb.html +196 -0
  622. data/doc/files/lib/rq-3_0_0/orderedhash_rb.html +138 -0
  623. data/doc/files/lib/rq-3_0_0/qdb_rb.html +201 -0
  624. data/doc/files/lib/rq-3_0_0/querier_rb.html +194 -0
  625. data/doc/files/lib/rq-3_0_0/recoverer_rb.html +194 -0
  626. data/doc/files/lib/rq-3_0_0/refresher_rb.html +187 -0
  627. data/doc/files/lib/rq-3_0_0/relayer_rb.html +198 -0
  628. data/doc/files/lib/rq-3_0_0/resource_rb.html +194 -0
  629. data/doc/files/lib/rq-3_0_0/resourcemanager_rb.html +187 -0
  630. data/doc/files/lib/rq-3_0_0/resubmitter_rb.html +195 -0
  631. data/doc/files/lib/rq-3_0_0/rotater_rb.html +195 -0
  632. data/doc/files/lib/rq-3_0_0/sleepcycle_rb.html +187 -0
  633. data/doc/files/lib/rq-3_0_0/snapshotter_rb.html +194 -0
  634. data/doc/files/lib/rq-3_0_0/sqlite_rb.html +160 -0
  635. data/doc/files/lib/rq-3_0_0/statuslister_rb.html +194 -0
  636. data/doc/files/lib/rq-3_0_0/submitter_rb.html +195 -0
  637. data/doc/files/lib/rq-3_0_0/toucher_rb.html +195 -0
  638. data/doc/files/lib/rq-3_0_0/updater_rb.html +194 -0
  639. data/doc/files/lib/rq-3_0_0/usage_rb.html +194 -0
  640. data/doc/files/lib/rq-3_0_0/util_rb.html +196 -0
  641. data/doc/files/lib/rq_rb.html +244 -0
  642. data/doc/fr_class_index.html +73 -0
  643. data/doc/fr_file_index.html +71 -0
  644. data/doc/fr_method_index.html +323 -0
  645. data/doc/index.html +24 -0
  646. data/doc/rdoc-style.css +172 -0
  647. data/extconf.rb +150 -0
  648. data/gemspec.rb +32 -0
  649. data/install.rb +75 -8
  650. data/lib/{rq-0.1.7.rb → rq-3.0.0.rb} +52 -10
  651. data/lib/{rq-0.1.7 → rq-3.0.0}/backer.rb +11 -7
  652. data/lib/{rq-0.1.7 → rq-3.0.0}/configfile.rb +21 -17
  653. data/lib/{rq-0.1.7 → rq-3.0.0}/configurator.rb +10 -6
  654. data/lib/rq-3.0.0/creator.rb +46 -0
  655. data/lib/rq-3.0.0/cron.rb +125 -0
  656. data/lib/{rq-0.1.7 → rq-3.0.0}/defaultconfig.txt +0 -0
  657. data/lib/rq-3.0.0/deleter.rb +51 -0
  658. data/lib/rq-3.0.0/executor.rb +40 -0
  659. data/lib/{rq-0.1.7 → rq-3.0.0}/feeder.rb +245 -91
  660. data/lib/rq-3.0.0/i686-linux/_sqlite.so +0 -0
  661. data/lib/rq-3.0.0/ioviewer.rb +48 -0
  662. data/lib/rq-3.0.0/job.rb +51 -0
  663. data/lib/rq-3.0.0/jobqueue.rb +899 -0
  664. data/lib/rq-3.0.0/jobrunner.rb +104 -0
  665. data/lib/{rq-0.1.7 → rq-3.0.0}/jobrunnerdaemon.rb +41 -27
  666. data/lib/rq-3.0.0/lister.rb +47 -0
  667. data/lib/rq-3.0.0/local/bin/sqlite +0 -0
  668. data/lib/rq-3.0.0/local/include/sqlite.h +868 -0
  669. data/lib/rq-3.0.0/local/lib/libsqlite.a +0 -0
  670. data/lib/rq-3.0.0/local/lib/libsqlite.la +35 -0
  671. data/lib/rq-3.0.0/local/lib/libsqlite.so +0 -0
  672. data/lib/rq-3.0.0/local/lib/libsqlite.so.0 +0 -0
  673. data/lib/rq-3.0.0/local/lib/libsqlite.so.0.8.6 +0 -0
  674. data/lib/rq-3.0.0/local/lib/pkgconfig/sqlite.pc +12 -0
  675. data/lib/{rq-0.1.7 → rq-3.0.0}/locker.rb +12 -6
  676. data/lib/{rq-0.1.7 → rq-3.0.0}/logging.rb +49 -42
  677. data/lib/rq-3.0.0/mainhelper.rb +184 -0
  678. data/lib/rq-3.0.0/orderedautohash.rb +39 -0
  679. data/lib/rq-3.0.0/orderedhash.rb +240 -0
  680. data/lib/{rq-0.1.7 → rq-3.0.0}/qdb.rb +183 -84
  681. data/lib/rq-3.0.0/querier.rb +98 -0
  682. data/lib/rq-3.0.0/recoverer.rb +28 -0
  683. data/lib/{rq-0.1.7 → rq-3.0.0}/refresher.rb +16 -8
  684. data/lib/rq-3.0.0/relayer.rb +283 -0
  685. data/lib/rq-3.0.0/resource.rb +22 -0
  686. data/lib/rq-3.0.0/resourcemanager.rb +40 -0
  687. data/lib/rq-3.0.0/resubmitter.rb +96 -0
  688. data/lib/rq-3.0.0/rotater.rb +98 -0
  689. data/lib/{rq-0.1.7 → rq-3.0.0}/sleepcycle.rb +14 -14
  690. data/lib/rq-3.0.0/snapshotter.rb +40 -0
  691. data/lib/rq-3.0.0/sqlite.rb +293 -0
  692. data/lib/rq-3.0.0/statuslister.rb +48 -0
  693. data/lib/rq-3.0.0/submitter.rb +109 -0
  694. data/lib/rq-3.0.0/toucher.rb +177 -0
  695. data/lib/rq-3.0.0/updater.rb +95 -0
  696. data/lib/rq-3.0.0/usage.rb +1157 -0
  697. data/lib/{rq-0.1.7 → rq-3.0.0}/util.rb +74 -56
  698. data/lib/rq.rb +52 -12
  699. data/rdoc.sh +17 -0
  700. data/rq +3 -1
  701. data/white_box/joblist +8 -0
  702. metadata +779 -96
  703. data/DEPENDS +0 -5
  704. data/HISTORY +0 -26
  705. data/VERSION +0 -1
  706. data/bin/rq-0.1.7 +0 -410
  707. data/lib/rq-0.1.7/creator.rb +0 -23
  708. data/lib/rq-0.1.7/deleter.rb +0 -39
  709. data/lib/rq-0.1.7/executor.rb +0 -41
  710. data/lib/rq-0.1.7/job.rb +0 -51
  711. data/lib/rq-0.1.7/jobqueue.rb +0 -432
  712. data/lib/rq-0.1.7/jobrunner.rb +0 -63
  713. data/lib/rq-0.1.7/lister.rb +0 -22
  714. data/lib/rq-0.1.7/mainhelper.rb +0 -53
  715. data/lib/rq-0.1.7/querier.rb +0 -33
  716. data/lib/rq-0.1.7/snapshotter.rb +0 -25
  717. data/lib/rq-0.1.7/statuslister.rb +0 -22
  718. data/lib/rq-0.1.7/submitter.rb +0 -90
  719. data/lib/rq-0.1.7/updater.rb +0 -95
  720. data/lib/rq-0.1.7/usage.rb +0 -609
  721. data/rdoc.cmd +0 -2
  722. data/rq.gemspec +0 -36
  723. data/rq.help +0 -552
@@ -0,0 +1,1223 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>File: README</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="fileHeader">
50
+ <h1>README</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>README
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Sun Feb 18 21:28:42 MST 2007</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+ <div id="contextContent">
69
+ <div id="diagram">
70
+ <map name="map">
71
+ </map>
72
+ <img src="../dot/f_1.jpg" usemap="#map" border=0 alt="TopLevel">
73
+ </div>
74
+
75
+ <div id="description">
76
+ <p>
77
+ NAME
78
+ </p>
79
+ <pre>
80
+ rq v3.0.0
81
+ </pre>
82
+ <p>
83
+ SYNOPSIS
84
+ </p>
85
+ <pre>
86
+ rq (queue | export RQ_Q=q) mode [mode_args]* [options]*
87
+ </pre>
88
+ <p>
89
+ URIS
90
+ </p>
91
+ <pre>
92
+ http://codeforpeople.com/lib/ruby/rq/
93
+ http://raa.ruby-lang.org/project/rq/
94
+ http://www.linuxjournal.com/article/7922
95
+ </pre>
96
+ <p>
97
+ DESCRIPTION
98
+ </p>
99
+ <pre>
100
+ ruby queue (rq) is a zero-admin zero-configuration tool used to create instant
101
+ unix clusters. rq requires only a central nfs filesystem in order to manage a
102
+ simple sqlite database as a distributed priority work queue. this simple
103
+ design allows researchers with minimal unix experience to install and
104
+ configure, in only a few minutes and without root privileges, a robust unix
105
+ cluster capable of distributing processes to many nodes - bringing dozens of
106
+ powerful cpus to their knees with a single blow. clearly this software should
107
+ be kept out of the hands of free radicals, seti enthusiasts, and one mr. j
108
+ safran.
109
+
110
+ the central concept of rq is that n nodes work in isolation to pull jobs
111
+ from an centrally mounted nfs priority work queue in a synchronized fashion.
112
+ the nodes have absolutely no knowledge of each other and all communication
113
+ is done via the queue meaning that, so long as the queue is available via
114
+ nfs and a single node is running jobs from it, the system will continue to
115
+ process jobs. there is no centralized process whatsoever - all nodes work
116
+ to take jobs from the queue and run them as fast as possible. this creates
117
+ a system which load balances automatically and is robust in face of node
118
+ failures.
119
+
120
+ although the rq system is simple in it's design it features powerful
121
+ functionality such as priority management, predicate and sql query , compact
122
+ streaming command-line processing, programmable api, hot-backup, and
123
+ input/capture of the stdin/stdout/stderr io streams of remote jobs. to date
124
+ rq has had no reported runtime failures and is in operation at dozens of
125
+ research centers around the world.
126
+ </pre>
127
+ <p>
128
+ INVOCATION
129
+ </p>
130
+ <pre>
131
+ the first argument to any rq command is the always the name of the queue
132
+ while the second is the mode of operation. the queue name may be omitted
133
+ if, and only if, the environment variable RQ_Q has been set to contain the
134
+ absolute path of target queue.
135
+
136
+ for instance, the command
137
+
138
+ ~ &gt; rq queue list
139
+
140
+ is equivalent to
141
+
142
+ ~ &gt; export RQ_Q=queue
143
+ ~ &gt; rq list
144
+
145
+ this facility can be used to create aliases for several queues, for example,
146
+ a .bashrc containing
147
+
148
+ alias MYQ=&quot;RQ_Q=/path/to/myq rq&quot;
149
+
150
+ alias MYQ2=&quot;RQ_Q=/path/to/myq2 rq&quot;
151
+
152
+ would allow syntax like
153
+
154
+ MYQ2 submit &lt; joblist
155
+ </pre>
156
+ <p>
157
+ MODES
158
+ </p>
159
+ <pre>
160
+ rq operates in modes create, submit, resubmit, list, status, delete, update,
161
+ query, execute, configure, snapshot, lock, backup, rotate, feed, recover,
162
+ ioview, cron, help, and a few others. the meaning of 'mode_args' will
163
+ naturally change depending on the mode of operation.
164
+
165
+ the following mode abbreviations exist, note that not all modes have
166
+ abbreviations
167
+
168
+ c =&gt; create
169
+ s =&gt; submit
170
+ r =&gt; resubmit
171
+ l =&gt; list
172
+ ls =&gt; list
173
+ t =&gt; status
174
+ d =&gt; delete
175
+ rm =&gt; delete
176
+ u =&gt; update
177
+ q =&gt; query
178
+ e =&gt; execute
179
+ C =&gt; configure
180
+ S =&gt; snapshot
181
+ L =&gt; lock
182
+ b =&gt; backup
183
+ R =&gt; rotate
184
+ f =&gt; feed
185
+ io =&gt; ioview
186
+ 0 =&gt; stdin
187
+ 1 =&gt; stdout
188
+ 2 =&gt; stderr
189
+ h =&gt; help
190
+
191
+ create, c :
192
+
193
+ creates a queue. the queue must be located on an nfs mounted file system
194
+ visible from all nodes intended to run jobs from it. nfs locking must be
195
+ functional on this file system.
196
+
197
+ examples :
198
+
199
+ 0) to create a queue
200
+ ~ &gt; rq /path/to/nfs/mounted/q create
201
+
202
+ or, using the abbreviation
203
+
204
+ ~ &gt; rq /path/to/nfs/mounted/q c
205
+
206
+ submit, s :
207
+
208
+ submit jobs to a queue to be proccesed by some feeding node. any
209
+ 'mode_args' are taken as the command to run. note that 'mode_args' are
210
+ subject to shell expansion - if you don't understand what this means do
211
+ not use this feature and pass jobs on stdin.
212
+
213
+ when running in submit mode a file may by specified as a list of commands
214
+ to run using the '--infile, -i' option. this file is taken to be a
215
+ newline separated list of commands to submit, blank lines and comments (#)
216
+ are allowed. if submitting a large number of jobs the input file method
217
+ is MUCH, more efficient. if no commands are specified on the command line
218
+ rq automatically reads them from stdin. yaml formatted files are also
219
+ allowed as input (http://www.yaml.org/) - note that the output of nearly
220
+ all rq commands is valid yaml and may, therefore, be piped as input into
221
+ the submit command. the leading '---' of yaml file may not be omitted.
222
+
223
+ when submitting the '--priority, -p' option can be used here to determine
224
+ the priority of jobs. priorities may be any whole number including
225
+ negative ones - zero is the default. note that submission of a high
226
+ priority job will NOT supplant a currently running low priority job, but
227
+ higher priority jobs WILL always migrate above lower priority jobs in the
228
+ queue in order that they be run as soon as possible. constant submission
229
+ of high priority jobs may create a starvation situation whereby low
230
+ priority jobs are never allowed to run. avoiding this situation is the
231
+ responsibility of the user. the only guaruntee rq makes regarding job
232
+ execution is that jobs are executed in an 'oldest-highest-priority' order
233
+ and that running jobs are never supplanted. jobs submitted with the
234
+ '--stage' option will not be eligible to be run by any node and will
235
+ remain in a 'holding' state until updated (see update mode) into the
236
+ 'pending' mode, this option allows jobs to entered, or 'staged', in the
237
+ queue and then made candidates for running at a later date.
238
+
239
+ rq allows the stdin of commands to be provided and also captures the
240
+ stdout and stderr of any job run (of course standard shell redirects may
241
+ be used as well) and all three will be stored in a directory relative the
242
+ the queue itself. the stdin/stdout/stderr files are stored by job id and
243
+ there location (though relative to the queue) is shown in the output of
244
+ 'list' (see docs for list).
245
+
246
+ examples :
247
+
248
+ 0) submit the job ls to run on some feeding host
249
+
250
+ ~ &gt; rq q s ls
251
+
252
+ 1) submit the job ls to run on some feeding host, at priority 9
253
+
254
+ ~ &gt; rq -p9 q s ls
255
+
256
+ 2) submit a list of jobs from file. note the '-' used to specify
257
+ reading jobs from stdin
258
+
259
+ ~ &gt; cat joblist
260
+ job1.sh
261
+ job2.sh
262
+ job2.sh
263
+
264
+ ~ &gt; rq q submit --infile=joblist
265
+
266
+ 3) submit a joblist on stdin
267
+
268
+ ~ &gt; cat joblist | rq q submit -
269
+
270
+ or
271
+
272
+ ~ &gt; rq q submit - &lt;joblist
273
+
274
+ 4) submit cat as a job, providing the stdin for cat from the file cat.in
275
+
276
+ ~ &gt; rq q submit cat --stdin=cat.in
277
+
278
+ 5) submit cat as a job, providing the stdin for the cat job on stdin
279
+
280
+ ~ &gt; cat cat.in | rq q submit cat --stdin=-
281
+
282
+ or
283
+
284
+ ~ &gt; rq q submit cat --stdin=- &lt;cat.in
285
+
286
+ 6) submit 42 priority 9 jobs from a command file, marking them as
287
+ 'important' using the '--tag, -t' option.
288
+
289
+ ~ &gt; wc -l cmdfile
290
+ 42
291
+
292
+ ~ &gt; rq -p9 -timportant q s &lt; cmdfile
293
+
294
+ 6) re-submit all the 'important' jobs (see 'query' section below)
295
+
296
+ ~ &gt; rq q query tag=important | rq q s -
297
+
298
+ 8) re-submit all jobs which are already finished (see 'list' section
299
+ below)
300
+
301
+ ~ &gt; rq q l f | rq q s
302
+
303
+ 9) stage the job wont_run_yet to the queue in a 'holding' state. no
304
+ feeder will run this job until it's state is upgraded to 'pending'
305
+
306
+ ~ &gt; rq q s --stage wont_run_yet
307
+
308
+ resubmit, r :
309
+
310
+ resubmit jobs back to a queue to be proccesed by a feeding node. resubmit
311
+ is essentially equivalent to submitting a job that is already in the queue
312
+ as a new job and then deleting the original job except that using resubmit
313
+ is atomic and, therefore, safer and more efficient. resubmission respects
314
+ any previous stdin provided for job input. read docs for delete and
315
+ submit for more info.
316
+
317
+ examples :
318
+
319
+ 0) resubmit job 42 to the queue
320
+
321
+ ~&gt; rq q resubmit 42
322
+
323
+ 1) resubmit all failed jobs
324
+
325
+ ~&gt; rq q query exit_status!=0 | rq q resubmit -
326
+
327
+ 2) resubmit job 4242 with different stdin
328
+
329
+ ~ rq q resubmit 4242 --stdin=new_stdin.in
330
+
331
+ list, l, ls :
332
+
333
+ list mode lists jobs of a certain state or job id. state may be one of
334
+ pending, holding, running, finished, dead, or all. any 'mode_args' that
335
+ are numbers are taken to be job id's to list.
336
+
337
+ states may be abbreviated to uniqueness, therefore the following shortcuts
338
+ apply :
339
+
340
+ p =&gt; pending
341
+ h =&gt; holding
342
+ r =&gt; running
343
+ f =&gt; finished
344
+ d =&gt; dead
345
+ a =&gt; all
346
+
347
+ examples :
348
+
349
+ 0) show everything in q
350
+ ~ &gt; rq q list all
351
+
352
+ or
353
+
354
+ ~ &gt; rq q l all
355
+
356
+ or
357
+
358
+ ~ &gt; export RQ_Q=q
359
+ ~ &gt; rq l
360
+
361
+ 1) show q's pending jobs
362
+ ~ &gt; rq q list pending
363
+
364
+ 2) show q's running jobs
365
+ ~ &gt; rq q list running
366
+
367
+ 3) show q's finished jobs
368
+ ~ &gt; rq q list finished
369
+
370
+ 4) show job id 42
371
+ ~ &gt; rq q l 42
372
+
373
+ 5) show q's holding jobs
374
+ ~ &gt; rq q list holding
375
+
376
+ status, t :
377
+
378
+ status mode shows the global state the queue and statistics on it's the
379
+ cluster's performance. there are no 'mode_args'. the meaning of each
380
+ state is as follows:
381
+
382
+ pending =&gt; no feeder has yet taken this job
383
+ holding =&gt; a hold has been placed on this job, thus no feeder will start
384
+ it
385
+ running =&gt; a feeder has taken this job
386
+ finished =&gt; a feeder has finished this job
387
+ dead =&gt; rq died while running a job, has restarted, and moved
388
+ this job to the dead state
389
+
390
+ note that rq cannot move jobs into the dead state unless it has been
391
+ restarted. this is because no node has any knowledge of other nodes and
392
+ cannot possibly know if a job was started on a node that subsequently
393
+ died, or that it is simply taking a very long time to complete. only the
394
+ node that dies, upon restart, can determine that it owns jobs that 'were
395
+ started before it started running jobs', an impossibility, and move these
396
+ jobs into the dead state.
397
+
398
+ normally only a machine crash would cause a job to be placed into the dead
399
+ state. dead jobs are automatically restarted if, and only if, the job was
400
+ submitted with the '--restartable' flag.
401
+
402
+ status breaks down a variety of canned statistics about a nodes'
403
+ performance based solely on the jobs currently in the queue. only one
404
+ option affects the ouput: '--exit'. this option is used to specify
405
+ additionaly exit code mappings on which to report. normally rq will
406
+ report any job with an exit code of 0 as being 'successes' and any job
407
+ with an exit code that is not 0, or a status of 'dead', as being
408
+ 'failures'. if the '--exit' switch is used then additional mappings can
409
+ be specified, note that the the semantics for 'successes' and 'failures'
410
+ does not change - this keyword specifies extra mappings.
411
+
412
+ examples :
413
+
414
+ 0) show q's status
415
+
416
+ ~ &gt; rq q t
417
+
418
+ 2) show q's status, consider any exit code of 42 will be listed as 'ok'
419
+
420
+ ~ &gt; rq q t --exit ok=42
421
+
422
+ 3) show q's status, consider any exit code of 42 or 43 will be listed as
423
+ 'ok' and 127 will be listed as 'command_not_found'. notice the quoting
424
+ required.
425
+
426
+ ~ &gt; rq q t --exit 'ok=42,43 command_not_found=127'
427
+
428
+ delete, d :
429
+
430
+ delete combinations of pending, holding, finished, dead, or jobs specified
431
+ by jid. the delete mode is capable of parsing the output of list and
432
+ query modes, making it possible to create custom filters to delete jobs
433
+ meeting very specific conditions.
434
+
435
+ 'mode_args' are the same as for list.
436
+
437
+ note that it is NOT possible to delete a running job. rq has a
438
+ decentralized architechture which means that compute nodes are completely
439
+ independant of one another; an extension is that there is no way to
440
+ communicate the deletion of a running job from the queue the the node
441
+ actually running that job. it is not an error to force a job to die
442
+ prematurely using a facility such as an ssh command spawned on the remote
443
+ host to kill it. once a job has been noted to have finished, whatever the
444
+ exit status, it can be deleted from the queue.
445
+
446
+ examples :
447
+
448
+ 0) delete all pending, finished, and dead jobs from a queue
449
+
450
+ ~ &gt; rq q d all
451
+
452
+ 1) delete all pending jobs from a queue
453
+
454
+ ~ &gt; rq q d p
455
+
456
+ 2) delete all finished jobs from a queue
457
+
458
+ ~ &gt; rq q d f
459
+
460
+ 3) delete jobs via hand crafted filter program
461
+
462
+ ~ &gt; rq q list | yaml_filter_prog | rq q d -
463
+
464
+ an example ruby filter program (you have to love this)
465
+
466
+ ~ &gt; cat yaml_filter_prog
467
+ require 'yaml'
468
+ joblist = YAML::load STDIN
469
+ y joblist.select{|job| job['command'] =~ /bombing_program/}
470
+
471
+ this program reads the list of jobs (yaml) from stdin and then dumps
472
+ only those jobs whose command matches 'bombing_program', which is
473
+ subsequently piped to the delete command.
474
+
475
+ update, u :
476
+
477
+ update assumes all leading arguments are jids to update with subsequent
478
+ key=value pairs. currently only the 'command', 'priority', and 'tag'
479
+ fields of pending jobs can be generically updated and the 'state' field
480
+ may be toggled between pending and holding.
481
+
482
+ examples:
483
+
484
+ 0) update the priority of job 42
485
+
486
+ ~ &gt; rq q update 42 priority=7
487
+
488
+ 1) update the priority of all pending jobs
489
+
490
+ ~ &gt; rq q update pending priority=7
491
+
492
+ 2) query jobs with a command matching 'foobar' and update their command
493
+ to be 'barfoo'
494
+
495
+ ~ &gt; rq q q &quot;command like '%foobar%'&quot; |\
496
+ rq q u command=barfoo
497
+
498
+ 3) place a hold on jid 2
499
+
500
+ ~ &gt; rq q u 2 state=holding
501
+
502
+ 4) place a hold on all jobs with tag=disk_filler
503
+
504
+ ~ &gt; rq q q tag=disk_filler | rq q u state=holding -
505
+
506
+ 5) remove the hold on jid 2
507
+
508
+ ~ &gt; rq q u 2 state=pending
509
+
510
+ query, q :
511
+
512
+ query exposes the database more directly the user, evaluating the where
513
+ clause specified on the command line (or read from stdin). this feature
514
+ can be used to make a fine grained slection of jobs for reporting or as
515
+ input into the delete command. you must have a basic understanding of SQL
516
+ syntax to use this feature, but it is fairly intuitive in this limited
517
+ capacity.
518
+
519
+ examples:
520
+
521
+ 0) show all jobs submitted within a specific 10 minute range
522
+
523
+ ~ &gt; a='2004-06-29 22:51:00'
524
+
525
+ ~ &gt; b='2004-06-29 22:51:10'
526
+
527
+ ~ &gt; rq q query &quot;started &gt;= '$a' and started &lt; '$b'&quot;
528
+
529
+ 1) shell quoting can be tricky here so input on stdin is also allowed to
530
+ avoid shell expansion
531
+
532
+ ~ &gt; cat constraints.txt
533
+ started &gt;= '2004-06-29 22:51:00' and
534
+ started &lt; '2004-06-29 22:51:10'
535
+
536
+ ~ &gt; rq q query &lt; contraints.txt
537
+ or (same thing)
538
+
539
+ ~ &gt; cat contraints.txt| rq q query -
540
+
541
+ 2) this query output might then be used to delete those jobs
542
+
543
+ ~ &gt; cat contraints.txt | rq q q - | rq q d -
544
+
545
+ 3) show all jobs which are either finished or dead
546
+
547
+ ~ &gt; rq q q &quot;state='finished' or state='dead'&quot;
548
+
549
+ 4) show all jobs which have non-zero exit status
550
+
551
+ ~ &gt; rq q query exit_status!=0
552
+
553
+ 5) if you plan to query groups of jobs with some common feature consider
554
+ using the '--tag, -t' feature of the submit mode which allows a user to
555
+ tag a job with a user defined string which can then be used to easily
556
+ query that job group
557
+
558
+ ~ &gt; rq q submit --tag=my_jobs - &lt; joblist
559
+
560
+ ~ &gt; rq q query tag=my_jobs
561
+
562
+ 6) in general all but numbers will need to be surrounded by single
563
+ quotes unless the query is a 'simple' one. a simple query is a query
564
+ with no boolean operators, not quotes, and where every part of it looks
565
+ like
566
+
567
+ key op value
568
+
569
+ with ** NO SPACES ** between key, op, and value. if, and only if,
570
+ the query is 'simple' rq will contruct the where clause
571
+ appropriately. the operators accepted, and their meanings, are
572
+
573
+ = : equivalence : sql =
574
+ =~ : matches : sql like
575
+ !~ : not matches : sql not like
576
+
577
+ match, in the context is ** NOT ** a regular expression but a sql
578
+ style string match. about all you need to know about sql matches is
579
+ that the '%' char matches anything. multiple simple queries will be
580
+ joined with boolean 'and'
581
+
582
+ this sounds confusing - it isn't. here are some examples of simple
583
+ queries
584
+
585
+ 6.a)
586
+ query :
587
+ rq q query tag=important
588
+
589
+ where_clause :
590
+ &quot;( tag = 'important' )&quot;
591
+
592
+ 6.b)
593
+ query :
594
+ rq q q priority=6 restartable=true
595
+
596
+ where_clause :
597
+ &quot;( priority = 6 ) and ( restartable = 'true' )&quot;
598
+
599
+ 6.c)
600
+ query :
601
+ rq q q command=~%bombing_job% runner=~%node_1%
602
+
603
+ where_clause :
604
+ &quot;( command like '%bombing_job%') and (runner like '%node_1%')&quot;
605
+
606
+ execute, e :
607
+
608
+ execute mode is to be used by expert users with a knowledge of sql syntax
609
+ only. it follows the locking protocol used by rq and then allows the user
610
+ to execute arbitrary sql on the queue. unlike query mode a write lock on
611
+ the queue is obtained allowing a user to definitively shoot themselves in
612
+ the foot. for details on a queue's schema the file 'db.schema' in the
613
+ queue directory should be examined.
614
+
615
+ examples :
616
+
617
+ 0) list all jobs
618
+
619
+ ~ &gt; rq q execute 'select * from jobs'
620
+
621
+ configure, C :
622
+
623
+ this mode is not supported yet.
624
+
625
+ snapshot, p :
626
+
627
+ snapshot provides a means of taking a snapshot of the q. use this feature
628
+ when many queries are going to be run; for example when attempting to
629
+ figure out a complex pipeline command your test queries will not compete
630
+ with the feeders for the queue's lock. you should use this option
631
+ whenever possible to avoid lock competition.
632
+
633
+ examples:
634
+
635
+ 0) take a snapshot using default snapshot naming, which is made via the
636
+ basename of the q plus '.snapshot'
637
+
638
+ ~ &gt; rq /path/to/nfs/q snapshot
639
+
640
+ 1) use this snapshot to chceck status
641
+
642
+ ~ &gt; rq ./q.snapshot status
643
+
644
+ 2) use the snapshot to see what's running on which host
645
+
646
+ ~ &gt; rq ./q.snapshot list running | grep `hostname`
647
+
648
+ note that there is also a snapshot option - this option is not the same as
649
+ the snapshot command. the option can be applied to ANY command. if in
650
+ effect then that command will be run on a snapshot of the database and the
651
+ snapshot then immediately deleted. this is really only useful if one were
652
+ to need to run a command against a very heavily loaded queue and did not
653
+ wish to wait to obtain the lock. eg.
654
+
655
+ 0) get the status of a heavily loaded queue
656
+
657
+ ~ &gt; rq q t --snapshot
658
+
659
+ 1) same as above
660
+
661
+ ~ &gt; rq q t -s
662
+
663
+ ** IMPORTANT **
664
+
665
+ a really great way to hang all processing in your queue is to do this
666
+
667
+ rq q list | less
668
+
669
+ and then leave for the night. you hold a read lock you won't release
670
+ until less dies. this is what snapshot is made for! use it like
671
+
672
+ rq q list -s | less
673
+
674
+ now you've taken a snapshot of the queue to list so your locks affect no
675
+ one.
676
+
677
+ lock, L :
678
+
679
+ lock the queue and then execute an arbitrary shell command. lock mode
680
+ uses the queue's locking protocol to safely obtain a lock of the specified
681
+ type and execute a command on the user's behalf. lock type must be one of
682
+
683
+ (r)ead | (sh)ared | (w)rite | (ex)clusive
684
+
685
+ examples :
686
+
687
+ 0) get a read lock on the queue and make a backup
688
+
689
+ ~ &gt; rq q L read -- cp -r q q.bak
690
+
691
+ (the '--' is needed to tell rq to stop parsing command line
692
+ options which allows the '-r' to be passed to the 'cp' command)
693
+
694
+ ** IMPORTANT **
695
+
696
+ this is another fantastic way to freeze your queue - use with care!
697
+
698
+ backup, b :
699
+
700
+ backup mode is exactly the same as getting a read lock on the queue and
701
+ making a copy of it. this mode is provided as a convenience.
702
+
703
+ 0) make a backup of the queue using default naming ( qname + timestamp + .bak )
704
+
705
+ ~ &gt; rq q b
706
+
707
+ 1) make a backup of the queue as 'q.bak'
708
+
709
+ ~ &gt; rq q b q.bak
710
+
711
+ rotate, r :
712
+
713
+ rotate mode is conceptually similar to log rolling. normally the list of
714
+ finished jobs will grow without bound in a queue unless they are manually
715
+ deleted. rotation is a method of trimming finished jobs from a queue
716
+ without deleting them. the method used is that the queue is copied to a
717
+ 'rotation'; all jobs that are dead or finished are deleted from the
718
+ original queue and all pending and running jobs are deleted from the
719
+ rotation. in this way the rotation becomes a record of the queue's
720
+ finished and dead jobs at the time the rotation was made.
721
+
722
+ 0) rotate a queue using default rotation name
723
+
724
+ ~ &gt; rq q rotate
725
+
726
+ 1) rotate a queue naming the rotation
727
+
728
+ ~ &gt; rq q rotate q.rotation
729
+
730
+ 2) a crontab entry like this could be used to rotate a queue daily
731
+
732
+ 59 23 * * * rq q rotate `date +q.%Y%m%d`
733
+
734
+ feed, f :
735
+
736
+ take jobs from the queue and run them on behalf of the submitter as
737
+ quickly as possible. jobs are taken from the queue in an 'oldest highest
738
+ priority' first order.
739
+
740
+ feeders can be run from any number of nodes allowing you to harness the
741
+ CPU power of many nodes simoultaneously in order to more effectively
742
+ clobber your network, anoy your sysads, and set output raids on fire.
743
+
744
+ the most useful method of feeding from a queue is to do so in daemon mode
745
+ so that if the process loses it's controling terminal it will not exit
746
+ when you exit your terminal session. use the '--daemon, -d' option to
747
+ accomplish this. by default only one feeding process per host per queue
748
+ is allowed to run at any given moment. because of this it is acceptable
749
+ to start a feeder at some regular interval from a cron entry since, if a
750
+ feeder is alreay running, the process will simply exit and otherwise a new
751
+ feeder will be started. in this way you may keep feeder processing
752
+ running even acroess machine reboots without requiring sysad intervention
753
+ to add an entry to the machine's startup tasks.
754
+
755
+ examples :
756
+
757
+ 0) feed from a queue verbosely for debugging purposes, using a minimum
758
+ and maximum polling time of 2 and 4 respectively. you would NEVER
759
+ specify polling times this brief except for debugging purposes!!!
760
+
761
+ ~ &gt; rq q feed -v4 --min_sleep=2 --max_sleep=4
762
+
763
+ 1) same as above, but viewing the executed sql as it is sent to the
764
+ database
765
+
766
+ ~ &gt; RQ_SQL_DEBUG=1 rq q feed -v4 --min_sleep=2 --max_sleep=4
767
+
768
+ 2) feed from a queue in daemon mode - logging to /home/ahoward/rq.log
769
+
770
+ ~ &gt; rq q feed --daemon -l/home/$USER/rq.log
771
+
772
+ log rolling in daemon mode is automatic so your logs should never
773
+ need to be deleted to prevent disk overflow.
774
+
775
+ start :
776
+
777
+ the start mode is equivalent to running the feed mode except the --daemon
778
+ is implied so the process instantly goes into the background. also, if no
779
+ log (--log) is specified in start mode a default one is used. the default
780
+ is /home/$USER/$BASENAME_OF_Q.log
781
+
782
+ examples :
783
+
784
+ 0) start a daemon process feeding from q
785
+
786
+ ~ &gt; rq q start
787
+
788
+ 1) use something like this sample crontab entry to keep a feeder running
789
+ forever - it attempts to (re)start every fifteen minutes but exits if
790
+ another process is already feeding. output is only created when the
791
+ daemon is started so your mailbox will not fill up with this crontab
792
+ entry:
793
+
794
+ #
795
+ # crontab.sample
796
+ #
797
+
798
+ */15 * * * * /path/to/bin/rq /path/to/q start
799
+
800
+ and entry like this on every node in your cluster is all that's needed
801
+ to keep your cluster going - even after a reboot.
802
+
803
+ shutdown :
804
+
805
+ tell a running feeder to finish any pending jobs and then to exit. this
806
+ is equivalent to sending signal 'SIGTERM' to the process - this is what
807
+ using 'kill pid' does by default.
808
+
809
+ examples :
810
+
811
+ 0) stop a feeding process, if any, that is feeding from q. allow all
812
+ jobs to be finished first.
813
+
814
+ ~ &gt; rq q shutdown
815
+
816
+ ** VERY IMPORTANT **
817
+
818
+ if you are keeping your feeder alive with a crontab entry you'll need to
819
+ comment it out before doing this or else it will simply re-start!!!
820
+
821
+ stop :
822
+
823
+ tell any running feeder to stop NOW. this sends signal 'SIGKILL' (-9) to
824
+ the feeder process. the same warning as for shutdown applies!!!
825
+
826
+ examples :
827
+
828
+ 0) stop a feeding process, if any, that is feeding from q. allow NO
829
+ jobs to be finished first - exit instantly.
830
+
831
+ ~ &gt; rq q stop
832
+
833
+ cron :
834
+
835
+ when given 'start' for 'mode_args' this option automatically adds a
836
+ crontab entry to keep a feeder alive indefinitely and starts a feeder in
837
+ the background. this is a shortcut to start a feeder and ensure it stays
838
+ running forever, even across re-boots.
839
+
840
+ 'stop' as an argument applys the inverse option: any crontab entry is
841
+ removed and the daemon shutdown nicely. a second argument of 'hard' will
842
+ do a stop instead of a shutdown.
843
+
844
+ the addition and subtraction of crontab entries is robust, however, if you
845
+ already have crontab lines maintaining your feeders with a vastly
846
+ different syntax it would be best to shut down, remove them, and then let
847
+ rq manage them. then again, some people are quite brave...
848
+
849
+ examples :
850
+
851
+ 0) automatically add crontab entry and start daemon feeder
852
+
853
+ ~ &gt; rq q cron start
854
+
855
+ 1) automatically remove crontab entry and shutdown daemon feeder nicely
856
+
857
+ ~ &gt; rq q cron shutdown
858
+
859
+ 2) the same, but using stop instead of shutdown
860
+
861
+ ~ &gt; rq q cron stop
862
+
863
+ pid :
864
+
865
+ show the pid, if any, of the feeder on this host
866
+
867
+ ~ &gt; rq q feeder
868
+ ---
869
+ pid : 3176
870
+
871
+ ioview, io :
872
+
873
+ as shown in the description for submit, a job maybe be provided stdin
874
+ during job submission. the stdout and stderr of the job are also captured
875
+ as the job is run. all three streams are captured in files located
876
+ relative to the queue. so, if one has submitted a job, and it's jid was
877
+ shown to be 42, by using something like
878
+
879
+ ~ &gt; rq /path/to/q submit myjob --stdin=myjob.in
880
+ ---
881
+ -
882
+ jid : 42
883
+ priority : 0
884
+ ...
885
+ stdin : stdin/42
886
+ stdout : stdout/42
887
+ stderr : stderr/42
888
+ ...
889
+ command : myjob
890
+
891
+ the stdin file will exists as soon as the job is submitted and the others
892
+ will exist once the job has begun running. note that these paths are
893
+ shown relative to the queue. in this case the actual paths would be
894
+
895
+ /path/to/q/stdin/42
896
+ /path/to/q/stdout/42
897
+ /path/to/q/stderr/42
898
+
899
+ but, since our queue is nfs mounted the /path/to/q may or may not be the
900
+ same on every host. thus the path is a relative one. this can make it
901
+ anoying to view these files, but rq assists here with the ioview command.
902
+ the ioview command spawns an external editor to view all three files.
903
+ it's use is quite simple
904
+
905
+ examples :
906
+
907
+ 0) view the stdin/stdout/stderr of job id 42
908
+
909
+ ~ &gt; rq q ioview 42
910
+
911
+ by default this will open up all three files in vim. the editor command
912
+ can be specified using the '--editor' option or the ENV var RQ_EDITOR.
913
+ the default value is 'vim -R -o' which allows all three files to be opened
914
+ in a single window.
915
+
916
+ stdin, 0 :
917
+
918
+ dump the stdinput (if any) provided to the job
919
+
920
+ examples :
921
+
922
+ 0) dump the stdin for jid 42
923
+
924
+ ~ &gt; rq q stdin 42
925
+
926
+ stdout, 1 :
927
+
928
+ dump the stdoutput (if any) created by the job
929
+
930
+ examples :
931
+
932
+ 0) dump the stdout for jid 42
933
+
934
+ ~ &gt; rq q stdout 42
935
+
936
+ stderr, 2 :
937
+
938
+ dump the stderrput (if any) created by the job
939
+
940
+ examples :
941
+
942
+ 0) dump the stderr for jid 42
943
+
944
+ ~ &gt; rq q stderr 42
945
+
946
+ stdin4 :
947
+
948
+ show the path used for the stdin of a jid
949
+
950
+ examples :
951
+
952
+ 0) show which file has job 42's stdin
953
+
954
+ ~ &gt; rq q stdin4 42
955
+
956
+ stdout4 :
957
+
958
+ show the path used for the stdout of a jid
959
+
960
+ examples :
961
+
962
+ 0) show which file has job 42's stdout
963
+
964
+ ~ &gt; rq q stdout4 42
965
+
966
+ stderr4 :
967
+
968
+ show the path used for the stderr of a jid
969
+
970
+ examples :
971
+
972
+ 0) show which file has job 42's stderr
973
+
974
+ ~ &gt; rq q stderr4 42
975
+
976
+ recover :
977
+
978
+ it is possible that a hardware failure might corrupt an rq database. this
979
+ isn't the kind of thing people like hearing, but it's true - hardware has
980
+ errors. in these situations a database can sometimes be readable, but not
981
+ writable, or some other combination. this has been reported only a
982
+ handful of times, nevertheless, this command wraps sqlite recovery to get
983
+ you rolling again, it's acceptable to perform recovery on a live rq
984
+ database with active feeders
985
+
986
+ examples :
987
+
988
+ 0) recover!
989
+
990
+ ~ &gt; rq q recover
991
+
992
+ help, h :
993
+
994
+ this message
995
+
996
+ examples :
997
+
998
+ 0) get this message
999
+
1000
+ ~&gt; rq q help
1001
+
1002
+ or
1003
+
1004
+ ~&gt; rq help
1005
+ </pre>
1006
+ <p>
1007
+ NOTES
1008
+ </p>
1009
+ <pre>
1010
+ - realize that your job is going to be running on a remote host and this has
1011
+ implications. paths, for example, should be absolute, not relative.
1012
+ specifically the submitted job script must be visible from all hosts
1013
+ currently feeding from a queue as must be the input and output
1014
+ files/directories.
1015
+
1016
+ - jobs are currently run under the bash shell using the --login option.
1017
+ therefore any settings in your .bashrc will apply - specifically your PATH
1018
+ setting. you should not, however, rely on jobs running with any given
1019
+ environment.
1020
+
1021
+ - you need to consider __CAREFULLY__ what the ramifications of having
1022
+ multiple instances of your program all potentially running at the same
1023
+ time will be. for instance, it is beyond the scope of rq to ensure
1024
+ multiple instances of a given program will not overwrite each others
1025
+ output files. coordination of programs is left entirely to the user.
1026
+
1027
+ - the list of finished jobs will grow without bound unless you sometimes
1028
+ delete some (all) of them. the reason for this is that rq cannot know
1029
+ when the user has collected the exit_status of a given job, and so keeps
1030
+ this information in the queue forever until instructed to delete it. if
1031
+ you have collected the exit_status of you job(s) it is not an error to
1032
+ then delete that job from the finished list - the information is kept for
1033
+ your informational purposes only. in a production system it would be
1034
+ normal to periodically save, and then delete, all finished jobs.
1035
+
1036
+ - know that it is a VERY bad idea to spawn several dozen process all
1037
+ reading/writing huge output files to a single NFS server. use this
1038
+ paradigm instead
1039
+
1040
+ * copy/move data from global input space to local disk
1041
+ * process data
1042
+ * move data on local disk to global output space
1043
+
1044
+ this, of course, applies to any nfs processing, not just those jobs
1045
+ submitted to rq
1046
+
1047
+ the vsftp daemon is an excellent utility to have running on hosts in your
1048
+ cluster so anonymous ftp can be used to get/put data between any two
1049
+ hosts.
1050
+
1051
+ - know that nfs locking is very, very easy to break with firewalls put in
1052
+ place by overzealous system administrators. be postive not only that nfs
1053
+ locking works, but that lock recovery server/client crash or reboot works
1054
+ as well. http://nfs.sourceforge.net/ is the place to learn about NFS. my
1055
+ experience thus far is that there are ZERO properly configured NFS
1056
+ installations in the world. please test yours. contact me for a simple
1057
+ script which can assist you. beer donations required as payment.
1058
+ </pre>
1059
+ <p>
1060
+ ENVIRONMENT
1061
+ </p>
1062
+ <pre>
1063
+ RQ_Q: set to the full path of nfs mounted queue
1064
+
1065
+ the queue argument to all commands may be omitted if, and only if, the
1066
+ environment variable 'RQ_Q' contains the full path to the q. eg.
1067
+
1068
+ ~ &gt; export RQ_Q=/full/path/to/my/q
1069
+
1070
+ this feature can save a considerable amount of typing for those weak of
1071
+ wrist.
1072
+
1073
+ a shell script like this can also be used to avoid needing to type the
1074
+ queue name each and every time
1075
+
1076
+ ~ &gt; cat my_q
1077
+ #!/bin/sh
1078
+ rq /full/path/to/my/q &quot;$@&quot;
1079
+
1080
+ and then all operations become, for example
1081
+
1082
+ ~&gt; my_q submit my_mob
1083
+ ~&gt; my_q status
1084
+ ~&gt; my_q delete 42
1085
+
1086
+ RQ_OPTS | RQ_OPTIONS: specify extra options
1087
+
1088
+ this ENV var can be used to specify options which should always apply, for
1089
+ example
1090
+
1091
+ ~ &gt; export RQ_OPTS=--restartable
1092
+
1093
+ and shell script like this might be used to mark jobs submitted by a
1094
+ certain user and to always submit them at a negative priority
1095
+
1096
+ ~ &gt; cat username_q
1097
+ #!/bin/sh
1098
+ export RQ_OPTS=&quot;--tag=username --priority=-42&quot;
1099
+ rq /full/path/to/my/q &quot;$@&quot;
1100
+
1101
+ actual command line options wil always override options given this way
1102
+ </pre>
1103
+ <p>
1104
+ DIAGNOSTICS
1105
+ </p>
1106
+ <pre>
1107
+ success : $? == 0
1108
+ failure : $? != 0
1109
+ </pre>
1110
+ <p>
1111
+ CREDITS
1112
+ </p>
1113
+ <pre>
1114
+ - kim baugh : patient tester and design input
1115
+ - jeff safran : the guy can break anything
1116
+ - chris elvidge : boss who made it possible
1117
+ - trond myklebust : tons of help with nfs
1118
+ - jamis buck : for writing the sqlite bindings for ruby
1119
+ - _why : for writing yaml for ruby
1120
+ - matz : for writing ruby
1121
+ </pre>
1122
+ <p>
1123
+ AUTHOR
1124
+ </p>
1125
+ <pre>
1126
+ ara.t.howard@gmail.com
1127
+ </pre>
1128
+ <p>
1129
+ BUGS
1130
+ </p>
1131
+ <pre>
1132
+ 0 &lt; bugno &amp;&amp; bugno &lt;= 42
1133
+
1134
+ reports to ara.t.howard@gmail.com
1135
+ </pre>
1136
+ <p>
1137
+ OPTIONS
1138
+ </p>
1139
+ <pre>
1140
+ --priority=priority, -p
1141
+ modes &lt;submit, resubmit&gt; : set the job(s) priority - lowest(0) ..
1142
+ highest(n) - (default 0)
1143
+ --tag=tag, -t
1144
+ modes &lt;submit, resubmit&gt; : set the job(s) user data tag
1145
+ --runner=runner
1146
+ modes &lt;submit, resubmit&gt; : set the job(s) required runner(s)
1147
+ --restartable
1148
+ modes &lt;submit, resubmit&gt; : set the job(s) to be restartable on node
1149
+ reboot
1150
+ --stage
1151
+ modes &lt;submit, resubmit&gt; : set the job(s) initial state to be holding
1152
+ (default pending)
1153
+ --infile=infile, -i
1154
+ modes &lt;submit, resubmit&gt; : infile
1155
+ --stdin=[stdin], -s
1156
+ modes &lt;submit, resubmit, update&gt; : stdin
1157
+ --quiet, -q
1158
+ modes &lt;submit, resubmit, feed&gt; : do not echo submitted jobs, fail
1159
+ silently if another process is already feeding
1160
+ --daemon, -D
1161
+ modes &lt;feed&gt; : spawn a daemon
1162
+ --max_feed=max_feed
1163
+ modes &lt;feed&gt; : the maximum number of concurrent jobs run
1164
+ --retries=retries
1165
+ modes &lt;feed&gt; : specify transaction retries
1166
+ --min_sleep=min_sleep
1167
+ modes &lt;feed&gt; : specify min sleep
1168
+ --max_sleep=max_sleep
1169
+ modes &lt;feed&gt; : specify max sleep
1170
+ --exit=exit_code_map
1171
+ modes &lt;status&gt; : specify and exit code map
1172
+ --fields=fields, -f
1173
+ limit which fields of output to display
1174
+ --snapshot, -s
1175
+ operate on snapshot of queue
1176
+ --editor=editor, -e
1177
+ editor command capable of opening multiple files at once = (default
1178
+ ENV[&quot;RQ_EDITOR&quot;] || &quot;vim -R -o&quot;)
1179
+ --verbosity=verbostiy, -v
1180
+ 0|fatal &lt; 1|error &lt; 2|warn &lt; 3|info &lt; 4|debug - (default info)
1181
+ --log=path, -l
1182
+ set log file - (default stderr)
1183
+ --log_age=log_age
1184
+ daily | weekly | monthly - what age will cause log rolling (default
1185
+ nil)
1186
+ --log_size=log_size
1187
+ size in bytes - what size will cause log rolling (default nil)
1188
+ --dot_rq_dir=[dot_rq_dir]
1189
+ base dir for log/pidfile storage (default ~/.rq/full/path/to/queue)
1190
+ --help, -h
1191
+ this message
1192
+ --version
1193
+ show version number
1194
+ </pre>
1195
+
1196
+ </div>
1197
+
1198
+
1199
+
1200
+
1201
+
1202
+
1203
+
1204
+
1205
+ </div>
1206
+
1207
+
1208
+
1209
+ <!-- if includes -->
1210
+
1211
+
1212
+ <!-- if method_list -->
1213
+
1214
+
1215
+ </div>
1216
+
1217
+
1218
+ <div id="validator-badges">
1219
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
1220
+ </div>
1221
+
1222
+ </body>
1223
+ </html>