getsentry / getsentry/sentry-python

Crons: Celerybeat integration provides invalid Crontab schedule

Open
#3,131 3 comments 0 reactions 0 assignees View on GitHub
Checks Crons Feature Integration: Celery Python
Dominant language
Python
Stars
2.2k
Forks
669
Avg merge
1d 1h
Merged PRs (30d)
213

Description

### How do you use Sentry?

Sentry Saas (sentry.io)

### Version

2.3.1

### Steps to Reproduce

Create a new Celery task with a crontab schedule of "0 0 * * saturday". The monitor for the task won't be upserted in Crons.

### Expected Result

The monitor and check-ins should be created in Crons.

### Actual Result

This happens because `0 0 * * saturday` is not a valid crontab schedule, but it is a [valid task schedule](https://docs.celeryq.dev/en/stable/userguide/periodic-tasks.html#crontab-schedules) in Celery.

This is the complete payload that has failed validation on our end:

```json
{
"check_in_id": "82f57c609739414a8e21a88165fd52d8",
"contexts": {
"trace": {
"trace_id": "8e424a9d5c7b462b8ccb638b3b9c98cc"
}
},
"duration": 1602.9272508621216,
"environment": "prod",
"monitor_config": {
"schedule": {
"type": "crontab",
"value": "0 0 * * saturday"
},
"timezone": "UTC"
},
"monitor_slug": "schedule-weekly-organization-reports-new",
"status": "ok"
}
```

Here's the definition for the task: https://github.com/getsentry/sentry/blob/d92153e4f39810ed5b91a1e5e340a51e3cf507ec/src/sentry/conf/server.py#L1112-L1116

Perhaps we can map these unique Celery schedule definitions to a valid Crontab? Celery also supports [solar schedules](https://docs.celeryq.dev/en/stable/userguide/periodic-tasks.html#solar-schedules
), so not sure what we want to do there.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.