mirror of https://gitlab.com/bashrc2/epicyon
Move inbox quota checks to separate function
parent
d7266136cc
commit
9ac74f9aba
190
inbox.py
190
inbox.py
|
@ -2682,6 +2682,104 @@ def runInboxQueueWatchdog(projectVersion: str, httpd) -> None:
|
|||
httpd.restartInboxQueue = False
|
||||
|
||||
|
||||
def _inboxQuotaExceeded(queue: {}, queueFilename: str,
|
||||
queueJson: {}, quotasDaily: {}, quotasPerMin: {},
|
||||
domainMaxPostsPerDay: int,
|
||||
accountMaxPostsPerDay: int,
|
||||
debug: bool) -> bool:
|
||||
"""limit the number of posts which can arrive per domain per day
|
||||
"""
|
||||
postDomain = queueJson['postDomain']
|
||||
if not postDomain:
|
||||
return False
|
||||
|
||||
if domainMaxPostsPerDay > 0:
|
||||
if quotasDaily['domains'].get(postDomain):
|
||||
if quotasDaily['domains'][postDomain] > \
|
||||
domainMaxPostsPerDay:
|
||||
print('Queue: Quota per day - Maximum posts for ' +
|
||||
postDomain + ' reached (' +
|
||||
str(domainMaxPostsPerDay) + ')')
|
||||
if len(queue) > 0:
|
||||
try:
|
||||
os.remove(queueFilename)
|
||||
except BaseException:
|
||||
pass
|
||||
queue.pop(0)
|
||||
return True
|
||||
quotasDaily['domains'][postDomain] += 1
|
||||
else:
|
||||
quotasDaily['domains'][postDomain] = 1
|
||||
|
||||
if quotasPerMin['domains'].get(postDomain):
|
||||
domainMaxPostsPerMin = \
|
||||
int(domainMaxPostsPerDay / (24 * 60))
|
||||
if domainMaxPostsPerMin < 5:
|
||||
domainMaxPostsPerMin = 5
|
||||
if quotasPerMin['domains'][postDomain] > \
|
||||
domainMaxPostsPerMin:
|
||||
print('Queue: Quota per min - Maximum posts for ' +
|
||||
postDomain + ' reached (' +
|
||||
str(domainMaxPostsPerMin) + ')')
|
||||
if len(queue) > 0:
|
||||
try:
|
||||
os.remove(queueFilename)
|
||||
except BaseException:
|
||||
pass
|
||||
queue.pop(0)
|
||||
return True
|
||||
quotasPerMin['domains'][postDomain] += 1
|
||||
else:
|
||||
quotasPerMin['domains'][postDomain] = 1
|
||||
|
||||
if accountMaxPostsPerDay > 0:
|
||||
postHandle = queueJson['postNickname'] + '@' + postDomain
|
||||
if quotasDaily['accounts'].get(postHandle):
|
||||
if quotasDaily['accounts'][postHandle] > \
|
||||
accountMaxPostsPerDay:
|
||||
print('Queue: Quota account posts per day -' +
|
||||
' Maximum posts for ' +
|
||||
postHandle + ' reached (' +
|
||||
str(accountMaxPostsPerDay) + ')')
|
||||
if len(queue) > 0:
|
||||
try:
|
||||
os.remove(queueFilename)
|
||||
except BaseException:
|
||||
pass
|
||||
queue.pop(0)
|
||||
return True
|
||||
quotasDaily['accounts'][postHandle] += 1
|
||||
else:
|
||||
quotasDaily['accounts'][postHandle] = 1
|
||||
|
||||
if quotasPerMin['accounts'].get(postHandle):
|
||||
accountMaxPostsPerMin = \
|
||||
int(accountMaxPostsPerDay / (24 * 60))
|
||||
if accountMaxPostsPerMin < 5:
|
||||
accountMaxPostsPerMin = 5
|
||||
if quotasPerMin['accounts'][postHandle] > \
|
||||
accountMaxPostsPerMin:
|
||||
print('Queue: Quota account posts per min -' +
|
||||
' Maximum posts for ' +
|
||||
postHandle + ' reached (' +
|
||||
str(accountMaxPostsPerMin) + ')')
|
||||
if len(queue) > 0:
|
||||
try:
|
||||
os.remove(queueFilename)
|
||||
except BaseException:
|
||||
pass
|
||||
queue.pop(0)
|
||||
return True
|
||||
quotasPerMin['accounts'][postHandle] += 1
|
||||
else:
|
||||
quotasPerMin['accounts'][postHandle] = 1
|
||||
|
||||
if debug:
|
||||
if accountMaxPostsPerDay > 0 or domainMaxPostsPerDay > 0:
|
||||
pprint(quotasDaily)
|
||||
return False
|
||||
|
||||
|
||||
def runInboxQueue(recentPostsCache: {}, maxRecentPosts: int,
|
||||
projectVersion: str,
|
||||
baseDir: str, httpPrefix: str, sendThreads: [], postLog: [],
|
||||
|
@ -2817,93 +2915,11 @@ def runInboxQueue(recentPostsCache: {}, maxRecentPosts: int,
|
|||
# change the last time that this was done
|
||||
quotasLastUpdatePerMin = currTime
|
||||
|
||||
# limit the number of posts which can arrive per domain per day
|
||||
postDomain = queueJson['postDomain']
|
||||
if postDomain:
|
||||
if domainMaxPostsPerDay > 0:
|
||||
if quotasDaily['domains'].get(postDomain):
|
||||
if quotasDaily['domains'][postDomain] > \
|
||||
domainMaxPostsPerDay:
|
||||
print('Queue: Quota per day - Maximum posts for ' +
|
||||
postDomain + ' reached (' +
|
||||
str(domainMaxPostsPerDay) + ')')
|
||||
if len(queue) > 0:
|
||||
try:
|
||||
os.remove(queueFilename)
|
||||
except BaseException:
|
||||
pass
|
||||
queue.pop(0)
|
||||
continue
|
||||
quotasDaily['domains'][postDomain] += 1
|
||||
else:
|
||||
quotasDaily['domains'][postDomain] = 1
|
||||
|
||||
if quotasPerMin['domains'].get(postDomain):
|
||||
domainMaxPostsPerMin = \
|
||||
int(domainMaxPostsPerDay / (24 * 60))
|
||||
if domainMaxPostsPerMin < 5:
|
||||
domainMaxPostsPerMin = 5
|
||||
if quotasPerMin['domains'][postDomain] > \
|
||||
domainMaxPostsPerMin:
|
||||
print('Queue: Quota per min - Maximum posts for ' +
|
||||
postDomain + ' reached (' +
|
||||
str(domainMaxPostsPerMin) + ')')
|
||||
if len(queue) > 0:
|
||||
try:
|
||||
os.remove(queueFilename)
|
||||
except BaseException:
|
||||
pass
|
||||
queue.pop(0)
|
||||
continue
|
||||
quotasPerMin['domains'][postDomain] += 1
|
||||
else:
|
||||
quotasPerMin['domains'][postDomain] = 1
|
||||
|
||||
if accountMaxPostsPerDay > 0:
|
||||
postHandle = queueJson['postNickname'] + '@' + postDomain
|
||||
if quotasDaily['accounts'].get(postHandle):
|
||||
if quotasDaily['accounts'][postHandle] > \
|
||||
accountMaxPostsPerDay:
|
||||
print('Queue: Quota account posts per day -' +
|
||||
' Maximum posts for ' +
|
||||
postHandle + ' reached (' +
|
||||
str(accountMaxPostsPerDay) + ')')
|
||||
if len(queue) > 0:
|
||||
try:
|
||||
os.remove(queueFilename)
|
||||
except BaseException:
|
||||
pass
|
||||
queue.pop(0)
|
||||
continue
|
||||
quotasDaily['accounts'][postHandle] += 1
|
||||
else:
|
||||
quotasDaily['accounts'][postHandle] = 1
|
||||
|
||||
if quotasPerMin['accounts'].get(postHandle):
|
||||
accountMaxPostsPerMin = \
|
||||
int(accountMaxPostsPerDay / (24 * 60))
|
||||
if accountMaxPostsPerMin < 5:
|
||||
accountMaxPostsPerMin = 5
|
||||
if quotasPerMin['accounts'][postHandle] > \
|
||||
accountMaxPostsPerMin:
|
||||
print('Queue: Quota account posts per min -' +
|
||||
' Maximum posts for ' +
|
||||
postHandle + ' reached (' +
|
||||
str(accountMaxPostsPerMin) + ')')
|
||||
if len(queue) > 0:
|
||||
try:
|
||||
os.remove(queueFilename)
|
||||
except BaseException:
|
||||
pass
|
||||
queue.pop(0)
|
||||
continue
|
||||
quotasPerMin['accounts'][postHandle] += 1
|
||||
else:
|
||||
quotasPerMin['accounts'][postHandle] = 1
|
||||
|
||||
if debug:
|
||||
if accountMaxPostsPerDay > 0 or domainMaxPostsPerDay > 0:
|
||||
pprint(quotasDaily)
|
||||
if _inboxQuotaExceeded(queue, queueFilename,
|
||||
queueJson, quotasDaily, quotasPerMin,
|
||||
domainMaxPostsPerDay,
|
||||
accountMaxPostsPerDay, debug):
|
||||
continue
|
||||
|
||||
if debug and queueJson.get('actor'):
|
||||
print('Obtaining public key for actor ' + queueJson['actor'])
|
||||
|
|
Loading…
Reference in New Issue