我可以像这样每隔十分钟设置一个cron:
*/10 * * * *
但是我想设置2个不会同时运行的cron作业。
是否可以像这样每10分钟运行一次:
12.00, 12.10, 12.20, 12.30, 12.40...
另一个运行:
12.05, 12.15, 12.25, 12.35, 12.45...
所以两者都是每10分钟运行一次,如果有意义的话,就不会完全同时运行。
答案 0 :(得分:2)
您可以安排它们以10分钟的周期开始相隔5分钟。
从整个小时开始每10分钟运行一次,你可以使用;
0/10 * * * *
...代表0, 10, 20, 30, 40, 50。
从每小时5点开始每10分钟运行一次;
5/10 * * * *
...代表5, 15, 25, 35, 45, 55。
答案 1 :(得分:1)
重复:How can I run a cron job every 5 minutes starting from a time other than 0 minutes?
您可以查看第一个答案:https://stackoverflow.com/a/16094616/1079254
另一个简单的解决方案是列出您想用逗号隔开的所有分钟数:
class GetOriginalTitleAndNameTestCase(TestCase):
@mock.patch('app.utils.requests.get')
def test_get_original_title_and_name_from_google_api(self, mock_get):
mock_response = mock.Mock()
# Define response data from Google API
expected_dict = {
'kind': 'books#volumes',
'totalItems': 1,
'items': [
{
'kind': 'books#volume',
'id': 'IHxXBAAAQBAJ',
'etag': 'B3N9X8vAMWg',
'selfLink': 'https://www.googleapis.com/books/v1/volumes/IHxXBAAAQBAJ',
'volumeInfo': {
'title': "Alice's Adventures in Wonderland",
'authors': [
'Lewis Carroll'
]
}
}
]
}
# Define response data for my Mock object
mock_response.json.return_value = expected_dict
mock_response.status_code = 200
# Define response for the fake API
mock_get.return_value = mock_response
# Call the function
result = get_original_title_and_name(12345)
self.assertEqual(result, {
'title': "Alice's Adventures in Wonderland",
'author': 'Lewis Carroll'
})
mock_get.assert_called_once_with(GOOGLE_API_URL, params={
'key': GOOGLE_API_KEY,
'q': 'isbn:12345',
'printType': 'books',
})
我认为这种语法对于人类来说更容易理解,并且应该可以在每个cron软件中使用。
答案 2 :(得分:0)
为什么不制作5米长的cronjob,脚本在每次执行时从一个切换到另一个?
我会做什么如果可能的话。祝你好运!