Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
haskell-gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
160
Issues
160
List
Board
Labels
Milestones
Merge Requests
14
Merge Requests
14
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
haskell-gargantext
Commits
763d4d35
Verified
Commit
763d4d35
authored
Oct 23, 2024
by
Przemyslaw Kaminski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[CLI] worker subcommands (run & stats)
parent
be611f59
Pipeline
#6883
failed with stages
in 18 minutes and 3 seconds
Changes
5
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
49 additions
and
17 deletions
+49
-17
Routes.hs
bin/gargantext-cli/CLI/Server/Routes.hs
+3
-3
Types.hs
bin/gargantext-cli/CLI/Types.hs
+10
-1
Worker.hs
bin/gargantext-cli/CLI/Worker.hs
+34
-11
cabal.project
cabal.project
+1
-1
gargantext.cabal
gargantext.cabal
+1
-1
No files found.
bin/gargantext-cli/CLI/Server/Routes.hs
View file @
763d4d35
...
...
@@ -23,14 +23,14 @@ import Servant.Auth qualified as Servant
routesCmd
::
Mod
CommandFields
CLI
routesCmd
=
command
"routes"
(
info
(
helper
<*>
(
fmap
CLISub
$
fmap
CCMD_routes
routesParser
))
(
progDesc
"Server routes related commands."
))
(
progDesc
"Server routes related commands."
))
routesParser
::
Parser
CLIRoutes
routesParser
=
hsubparser
(
(
command
"list"
(
info
(
helper
<*>
list_p
)
(
progDesc
"List all the available routes, computed by the Routes types."
)))
<>
(
progDesc
"List all the available routes, computed by the Routes types."
)))
<>
(
command
"export"
(
info
(
helper
<*>
export_p
)
(
progDesc
"Exports all the routes into a file, for golden-diff testing."
)))
(
progDesc
"Exports all the routes into a file, for golden-diff testing."
)))
)
list_p
::
Parser
CLIRoutes
...
...
bin/gargantext-cli/CLI/Types.hs
View file @
763d4d35
...
...
@@ -80,12 +80,21 @@ data CLIRoutes
|
CLIR_export
FilePath
deriving
(
Show
,
Eq
)
data
CLIWorker
=
CLIW_run
WorkerArgs
|
CLIW_stats
WorkerStatsArgs
deriving
(
Show
,
Eq
)
data
WorkerArgs
=
WorkerArgs
{
worker_toml
::
!
SettingsFile
,
worker_name
::
!
Text
,
worker_run_single
::
!
Bool
}
deriving
(
Show
,
Eq
)
data
WorkerStatsArgs
=
WorkerStatsArgs
{
ws_toml
::
!
SettingsFile
}
deriving
(
Show
,
Eq
)
data
CLICmd
=
CCMD_clean_csv_corpus
|
CCMD_filter_terms_and_cooc
!
CorpusFile
!
TermListFile
!
OutputFile
...
...
@@ -100,7 +109,7 @@ data CLICmd
|
CCMD_upgrade
!
UpgradeArgs
|
CCMD_golden_file_diff
!
GoldenFileDiffArgs
|
CCMD_routes
!
CLIRoutes
|
CCMD_worker
!
WorkerArgs
|
CCMD_worker
!
CLIWorker
deriving
(
Show
,
Eq
)
data
CLI
=
...
...
bin/gargantext-cli/CLI/Worker.hs
View file @
763d4d35
...
...
@@ -12,14 +12,16 @@ Portability : POSIX
module
CLI.Worker
where
import
Async.Worker.Broker.Types
qualified
as
BT
import
Async.Worker.Types
qualified
as
W
import
CLI.Types
import
CLI.Parsers
import
Data.List
qualified
as
List
(
cycle
,
concat
,
take
)
import
Data.Text
qualified
as
T
import
Gargantext.Core.Config
(
hasConfig
,
_
gc_worker
)
import
Gargantext.Core.Config
(
hasConfig
,
gc_worker
)
import
Gargantext.Core.Config.Types
(
SettingsFile
(
..
))
import
Gargantext.Core.Config.Worker
(
WorkerDefinition
(
..
),
WorkerSettings
(
..
),
findDefinitionByName
)
import
Gargantext.Core.Worker
(
withPGMQWorker
,
withPGMQWorkerSingle
)
import
Gargantext.Core.Worker
(
withPGMQWorker
,
withPGMQWorkerSingle
,
initWorkerState
)
import
Gargantext.Core.Worker.Env
(
withWorkerEnv
)
import
Gargantext.Core.Worker.Jobs
(
sendJob
)
import
Gargantext.Core.Worker.Jobs.Types
(
Job
(
Ping
))
...
...
@@ -32,9 +34,8 @@ import Prelude qualified
-- TODO Command to monitor queues
-- TODO Support for KillWorkerSafely on Ctrl-C (so that the job in progress is moved back into the queue)
workerCLI
::
WorkerArgs
->
IO
()
workerCLI
(
WorkerArgs
{
..
})
=
do
workerCLI
::
CLIWorker
->
IO
()
workerCLI
(
CLIW_run
(
WorkerArgs
{
..
}))
=
do
let
___
=
putStrLn
((
List
.
concat
$
List
.
take
72
$
List
.
cycle
[
"_"
])
::
Prelude
.
String
)
...
...
@@ -46,8 +47,7 @@ workerCLI (WorkerArgs { .. }) = do
___
withWorkerEnv
worker_toml
$
\
env
->
do
let
gc
=
env
^.
hasConfig
let
ws
=
_gc_worker
gc
let
ws
=
env
^.
hasConfig
.
gc_worker
case
findDefinitionByName
ws
worker_name
of
Nothing
->
do
let
workerNames
=
_wdName
<$>
(
_wsDefinitions
ws
)
...
...
@@ -61,15 +61,35 @@ workerCLI (WorkerArgs { .. }) = do
wait
a
else
withPGMQWorker
env
wd
$
\
a
_state
->
do
runReaderT
(
sendJob
Ping
)
env
_
<-
runReaderT
(
sendJob
Ping
)
env
wait
a
workerCLI
(
CLIW_stats
(
WorkerStatsArgs
{
..
}))
=
do
putStrLn
(
"worker toml: "
<>
_SettingsFile
ws_toml
)
withWorkerEnv
ws_toml
$
\
env
->
do
let
ws
=
env
^.
hasConfig
.
gc_worker
mapM_
(
\
wd
->
do
state'
<-
initWorkerState
env
wd
let
q
=
W
.
queueName
state'
qs
<-
BT
.
getQueueSize
(
W
.
broker
state'
)
q
putStrLn
(
"Queue: "
<>
show
q
<>
", size: "
<>
show
qs
::
Text
)
)
(
_wsDefinitions
ws
)
workerCmd
::
HasCallStack
=>
Mod
CommandFields
CLI
workerCmd
=
command
"worker"
(
info
(
helper
<*>
fmap
CLISub
worker_p
)
(
progDesc
"Gargantext worker."
))
workerCmd
=
command
"worker"
(
info
(
helper
<*>
(
fmap
CLISub
$
fmap
CCMD_worker
workerParser
))
(
progDesc
"Gargantext worker."
))
worker_p
::
Parser
CLICmd
worker_p
=
fmap
CCMD_worker
$
WorkerArgs
workerParser
::
Parser
CLIWorker
workerParser
=
hsubparser
(
(
command
"run"
(
info
(
helper
<*>
worker_p
)
(
progDesc
"Run a single worker"
)))
<>
(
command
"stats"
(
info
(
helper
<*>
stats_p
)
(
progDesc
"Print queue stats"
)))
)
worker_p
::
Parser
CLIWorker
worker_p
=
fmap
CLIW_run
$
WorkerArgs
<$>
settings_p
<*>
strOption
(
long
"name"
<>
metavar
"STRING"
...
...
@@ -77,3 +97,6 @@ worker_p = fmap CCMD_worker $ WorkerArgs
<*>
flag
False
True
(
long
"run-single"
<>
help
"Whether to loop or run a single job from queue"
)
stats_p
::
Parser
CLIWorker
stats_p
=
fmap
CLIW_stats
$
WorkerStatsArgs
<$>
settings_p
cabal.project
View file @
763d4d35
...
...
@@ -196,7 +196,7 @@ source-repository-package
source
-
repository
-
package
type
:
git
location
:
https
://
gitlab
.
iscpif
.
fr
/
gargantext
/
haskell
-
bee
tag
:
d783198e1b7ca8a61e5332965db468da3faef796
tag
:
00
a4113992545d1e0a78b9f73a69ec527e79bd1b
source
-
repository
-
package
type
:
git
...
...
gargantext.cabal
View file @
763d4d35
...
...
@@ -740,6 +740,7 @@ common testDependencies
, gargantext
, gargantext-prelude
, graphviz ^>= 2999.20.1.0
, haskell-bee
, hspec ^>= 2.11.1
, hspec-core
, hspec-expectations >= 0.8 && < 0.9
...
...
@@ -861,7 +862,6 @@ test-suite garg-test-hspec
import:
defaults
, testDependencies
build-depends: haskell-bee
type: exitcode-stdio-1.0
main-is: drivers/hspec/Main.hs
other-modules:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment