rq 0.1.7 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>