hibiken / asynq

Simple, reliable, and efficient distributed task queue in Go
MIT License
9.39k stars 673 forks source link

[BUG] Need to enqueue task from ROR or redis-cli. #664

Open Josh-ShubhamVyas opened 1 year ago

Josh-ShubhamVyas commented 1 year ago

So we are migrating a module from Rails to Golang. We have implemented sidekiq in rails for the same module so we are planning to use asynq in Golang to achieve the background processing like sidekiq.

When I looked for some examples online I did find an example for version v0.17.1 and using the following Redis command to create a task but it fails with an error
Redis command RPUSH asynq:{critical} '{"Type":"dls:validate","Payload":{"release_upload_id":18921,"format":"Brandscope"},"ID":"1803b40c-6118-4b78-b3a0-4564e0411db1","Queue":"critical","Retry":25,"Retried":0,"ErrorMsg":"","Timeout":1800,"Deadline":0,"UniqueKey":""}' Error Could not remove task id=1803b40c-6118-4b78-b3a0-4564e0411db1 type="dls:validate" from "asynq:{critical}:active" err: NOT FOUND

Can anyone please help me here? I do want to use the latest version but asynq is using hash type for new tasks and we do encode some text which will be harder to repeat in rails. Any alternative solutions you can give me are welcome. I want to queue tasks using rails instead of golang.

jerroldgao commented 1 year ago

Got the same issue Could not remove task id=fa9f5826-679b-4b54-9080-1ad6d8919e19 type="filter_social_feed" from "asynq:{default}:active" err: INTERNAL_ERROR: redis eval error: write tcp ***: i/o timeout; Will retry syncing

reidcooper commented 7 months ago

I would suggest not pushing directly through Redis since your error sounds like there are other pieces of information that Asynq keeps track off that you are not doing in addition to pushing the job info.

Maybe build a script that reads your sidekiq jobs and pushes them into asynq using the official API.