How to show the scheduled cron to the user - Celery scheduler? - celery

I have a django app where users can schedule to run their tasks every week/month. I am storing this as a CrontabSchedule in django_celery_beat. Now, I would like to show the user his schedule (like task will run every saturday at 12AM -human readable format). How can I do this when the crontab is TZ aware?
And the user could be in different timezone than the timezone of the TZ aware crontab in django_celery_beat.
E.g. The user has set the schedule to run a task at 3.30AM in Asia/Hong_Kong timezone. But the user is at Berlin now. I want to display this schedule (3.30AM Asia/Hong_Kong) in human-readable format to the user according to his timezone.

Related

Handling dates without a time component

Some events don't take place at any specific time and instead are meant to be valid for the whole day irrespective of the time zone the user is at.
For the sake of argument, let's say a system sitting on a server (up in the cloud) runs a job at 5 am and imports data from a different system between this run and the last (24 hours ago). The actual user sitting at his desk doesn't know when the job runs, the user only knows that they go to sleep at night, the server crunches all the entries for the day.
The next morning the user wants to see all the entries from yesterday (what ever the job produced) and they go to the app, pull up a calendar input selector and they pick the 5/26/2022 (today being 5/27/2022).
Assuming the developers followed best practices, the client will transform the date into it's UTC version and send it up through an API. Chances are, depending on where the user is located and the server is, there might be a mismatch.
I could send the date up without it being UTC or I could send a UTC date and try to adjust it back to local time so that I could then compare with the date on record (that exists without an actual time zone).
What I am asking is:
What's the more conventional answer to this particular problem?
Is the idea of a date without time or time zone just ridiculous?
Use UNIX Time. It will give you a timestamp that is universal no matter what timezone the user is in. You can then convert it into whatever timezone you want to.
The concern you describe is well solved/addressed by the ISO 8601 dates/time presentation protocol.
All modern software can read/write dates in ISO 8601.
In Unix machines, the correct command is date with option -I
-I[FMT], --iso-8601[=FMT]
output date/time in ISO 8601 format. FMT='date' for date
only (the default), 'hours', 'minutes', 'seconds', or 'ns'
for date and time to the indicated precision. Example:
2006-08-14T02:34:56-06:00

I need to create a powershell script to trigger a specific windows task daily on a specific interval of time for a particular duration

I need to create a powershell script to trigger a specific windows task daily on a specific interval of time for a particular duration.
My scenario is like this task needs to be trigger everyday on a half an hour interval from 5 am to 5 pm. I tried with the New-JobTrigger options, but I dont see an repetation option.
I am using powershell version 5.1
Try heading towards a scheduled task.
- Write your powershell script.
- Create a scheduled task that runs it whenever you want with a specified time range.

In ISO 8601 does 'P1D' mean midnight tonight? 24 hours from now? Midnight tomorrow night?

I have a virtual assistant app that includes a task manager. Some 'daily' tasks (like 'Check the mail' need to drop off at midnight so they don't clutter up the task list.
We use ISO 8601 to control how long until the task falls off the list.
I've looked all over trying to get clarity on the definition of a "D" day.
For example: Does P1D mean 24 hours? Midnight tomorrow? Midnight tonight?
I'm trying to achieve midnight tonight.
This is an interval, not a specific time of the day and thus it is meaningless without a starting point.
So in this context, this probably means that the task is dropped after 24 hours it had finished.

Why are my times screwed up on some devices but fine on others?

I have an icalendar I generate via PHP so people can download the latest schedule to their phones. It works great except that the game times are off by 6 hours on my iPhone. The game time is perfectly fine displaying on Windows calendar.
I've tried playing with the timezones and times but cannot get them to be equal on all platforms.
The calendar is viewable at:
webcal://cal.outbackthunder.com
Dawson,
your ics file at http://cal.outbackthunder.com has the event dates specified in 'local' or 'floating' times.
So the importing app will probably make the events be that time in it's timezone. 8am is 8am in all timezones (think of a travellers alarm clock - where they want to wake at 8m no matter the timezone they are in, vs a reminder to call their partner at 8am in the home timezone, where they'd then want it to adjust to the traveling timezone.)
Either add a Z and issue date-times in UTC, or add the TZID identifer of the timezone.
See https://www.rfc-editor.org/rfc/rfc5545#section-3.3.5.
See these examples in the spec:
Example: The following represents July 14, 1997, at 1:30 PM in New
York City in each of the three time formats, using the "DTSTART"
property.
DTSTART:19970714T133000 ; Local time
DTSTART:19970714T173000Z ; UTC time
DTSTART;TZID=America/New_York:19970714T133000
; Local time and time
; zone reference
Also try running your ics file through as many validators as you can find if you want the general public to be able to use the url. They tend to report slightly differently. EG: one says of http://cal.outbackthunder.com
DATE-TIME value in [DTSTAMP] must be specified in UTC time
Property [ORGANIZER] must be specified once

Google Script Run ClockTrigger Multiple Scripts

The situation I have is this:
a google form signup where people can sign up for notifications
a series of scripts that I would like to run nightly that looks through the form responses and emails people appropriately, Emailer()
an unsubscribe script that ideally runs frequently (every hour or so would be enough) as well as right before the notifications email is
sent. This looks through the inbox for emails and removes the
appropriate entries from the form responses, Unsubscriber()
I am having trouble coming up with a way to coordinate the way these two scripts will run. What I would like to happen is to have Unsubscriber() run every hour or so throughout the day. At midnight or some late night hour, I would like to run Emailer() once and have the Unsubscriber() function not be running at this time. Once Emailer() completes, I would like the Unsubscriber() function to resume running at its regular interval. I feel like this should be possible using a ClockTrigger, but I can't envision how to make it happen.
I am also wondering, if the Unsubscriber() function is scheduled to run every hour with a ClockTrigger, but takes longer than an hour on a certain instance, will the ClockTrigger start a second instance of the script?
Here is the documentation on how to create manually a time trigger, you can set the function to run every hour.
This trigger could be related to a main function in which you could evaluate the current time, if its in the range of midnight (e.g. 12am < current time > 1am) call the function Emailer(), for every other time of the day call Unsuscriber().
Hope this helps.